2013-02-13 2 views
0

Я пытаюсь импортировать 5 конфигурационных файлов (rubin1.cfg ... rubin5.cfg) в базу данных sqlite3. Файл конфигурации - это очевидный список строк. Каждая строка начинает новую строку. Я бы импортировал строки файлов в таблицу sqlite и вставлял индекс файла конфигурации в поле FileID.Импорт текстового файла в sqlite с двумя параметрами python

import sqlite3, codecs 
con = sqlite3.connect("ConfigImport.db") 
cur = con.cursor() 
n = 0 
sql = """\ 
     DROP TABLE IF EXISTS 
     TblRubin; 

     CREATE TABLE TblRubin 
     (StringId INTEGER PRIMARY KEY, 
     FileId INTEGER 
     String TEXT) 
     """ 
cur.executescript(sql) 
while n < 5: 
    n = n + 1 
    i = 0 
    path = r'C:\\t7\\config\\rubi'+ str(n) + '.cfg' 
    f = codecs.open(path, "r", encoding='cp1251') 
    str2 = codecs.open(path, "r", encoding='cp1251').readlines() 
    print 'File', path, 'opened. Number of strings: ', str(len(str2)) 
    for line in f: 
     cur.execute('insert into tblrubin values (null, ?, ?)', n, [str2[i].rstrip()]) 
     i = i + 1 
    con.commit()    
cur.close()     
con.close() 

И как результат:

File C:\\t7\\config\\rubi1.cfg opened. Number of strings: 6528 
Traceback (most recent call last): 
    File "C:\t7\programs\analysis\ConfigImport.py", line 25, in <module> 
    cur.execute('insert into tblrubin values (null, ?, ?)', (n, str2[i].rstrip())) 
sqlite3.OperationalError: table tblrubin has 2 columns but 3 values were supplied 

Когда я пытался импортировать только один файл и сценарий содержит с одним параметром, как это ...:

cur.execute('insert into tblrubin2 values (null, ?)', [str2[i].rstrip()]) 

... импорт вставка работа был успешным.

Можете ли вы сделать предложение о том, как сделать правильный скрипт для импорта текстового файла в sqlite db с двумя параметрами?

ответ

0

Вы должны добавить запятую в свой CREATE TABLE заявление:

.... 
    FileId INTEGER , -- HERE 
    String TEXT 
    .... 

или не будет иметь никакого String колонки.

+0

спасибо. Оно работает. – robopyh

Смежные вопросы