当前位置: 代码迷 >> python >> Python:从.txt文件到sql表
  详细解决方案

Python:从.txt文件到sql表

热度:40   发布时间:2023-06-13 20:24:36.0

我有一个文本文件,其中包含某些小时,格式为“ hh:mm”,其顺序如下:

Times1.txt:

10:12 13:22 15:45 18:23 19:20(...)

现在,我想使用Python和SQLite3将此.txt文件导入名为Times1.db的SQL数据库,并创建一个包含一列的表,该列的每一行将在下一个小时开始,如下所示:

10:12
13:22
15:45
18:23
19:20
(...)

因此,我可以从该表中仅获得第二行,即13:22。

如果这可能会更改,则.txt文件也可能会以这种格式存储以下时间:

10:12,12:22,15:45,(...)

要么

10:12
12:22
15:45
(...)

我尝试了很多方法来做到这一点,但我所能得到的只是一整天都花了一行。

这是我到目前为止尝试过的:

import os
import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()

#c.execute("CREATE TABLE time(hour REAL)")
#table time is already created

#thanks to @Asav Patel
with open('test.txt') as f1:
    hours = next(f1).split()

for hour in hours:
    print (hour)    

c.executemany("INSERT INTO time (hour) VALUES (?)", (hour,))

conn.commit()

def read_from_database():
    sql = "SELECT * FROM time"

    for row in c.execute(sql):
        print(row)
        print(row[0])

read_from_database()

conn.close()

假设文件中只有一行。

with open('test_docs/file1.txt') as f:
    hours = f.read().split()

for hour in hours:
    print (hour)

好的,我找到了一种方法来进行此操作:)我对其进行了测试,并且可以正常工作。

import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()

c.execute("CREATE TABLE example(Time REAL)")

num_lines = sum(1 for line in open('test.txt'))
f=open('test.txt')
lines=f.readlines()
i=1
while True:
    time = (lines[i])
    c.execute("INSERT INTO example (Time) VALUES (?)", (time, ))
    conn.commit()
    i+=1
    if i == num_lines:
        break

conn.close()

@cwallenpoole

但这是我发现创建表的唯一方法: