Python:从.txt文件转换为sql表
我有一个文本文件,其中包含一定的小时数,格式为“hh:mm”,顺序如下: Times1.txt:Python:从.txt文件转换为sql表,python,sql,Python,Sql,我有一个文本文件,其中包含一定的小时数,格式为“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 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,(...)
或
我尝试了很多方法,但我能得到的只是一行的时间
这就是我迄今为止所尝试的:
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()
@cWallenpole
但这是我发现的创建如下表的唯一方法:
您好,谢谢您的重播。这很有效,但我如何才能将这些拆分的文本导入SQL数据库,使其在每小时的列中都有一个新行?您必须在每小时生成一个SQL语句,并将其写入另一个文件,然后将该文件导入数据库?我可以看看您到目前为止做了什么吗?@orvi我发布了我已经发布的内容far@cwallenpoole你知道像我贴的那样用板条箱装桌子的更好方法吗在我上面的评论中?
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()