Я пытаюсь импортировать 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 с двумя параметрами?
спасибо. Оно работает. – robopyh