Python:从.txt文件到sql表

时间:2017-02-15 18:40:26

标签: 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,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()

2 个答案:

答案 0 :(得分:0)

假设您的文件中只有一行。

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

for hour in hours:
    print (hour)

答案 1 :(得分:-1)

好的,我找到了一种方法来做到这一点:)我测试了它并且它正在工作。

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

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