问题描述
我有一个文本文件,其中包含某些小时,格式为“ 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()
1楼
假设文件中只有一行。
with open('test_docs/file1.txt') as f:
hours = f.read().split()
for hour in hours:
print (hour)
2楼
好的,我找到了一种方法来进行此操作:)我对其进行了测试,并且可以正常工作。
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
但这是我发现创建表的唯一方法: