2017-02-15 8 views
0

У меня есть текстовый файл, который содержит определенное количество часов в формате «чч: мм» и для того, как этот ниже:Python: из текстового файла в таблицу SQL

Times1.txt:

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

Теперь я хотел бы импортировать этот файл .txt в базу данных SQL с именем Times1.db с помощью Python и SQLite3 и создать таблицу с одной колонкой и каждой строке этого столбца будет следующий час, как это:

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() 
+0

Могу ли я увидеть вас, что вы делали до сих пор? – orvi

+0

@orvi Я отправил то, что у меня есть, – Gewof

ответ

0

при условии, что есть только одна строка в файле.

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

for hour in hours: 
    print (hour) 
+0

Привет, спасибо за повтор. Это работает, но как я могу импортировать этот разделенный текст в базу данных SQL, чтобы каждый час давать новую строку в столбце? – Gewof

+0

вам нужно сгенерировать инструкцию SQL с каждым часом и записать ее в другой файл, а затем импортировать этот файл в базу данных. –

-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

+1

. Вы читаете весь файл несколько раз. – cwallenpoole

+0

@cwallenpoole Вы знаете лучший способ собрать стол, как я опубликовал в своем комментарии выше? – Gewof