Я сталкиваюсь с этой ошибкой, которую не могу решить. Я пишу некоторый код на Python, используя интерфейс tkinter для передачи данных из текстового файла в sqlite.
Сначала вот соответствующий код:
def submit_data(self):
self.new_filename = self.file_entry.get()
self.new_tablename = self.table_entry.get()
self.new_fieldname = self.field_entry.get().split(',')
#print(self.new_fieldname)
self.create_new.destroy()
from sqlite3 import dbapi2 as sqlite
con = sqlite.connect(self.new_filename)
cur = con.cursor()
cur.execute('CREATE TABLE ' + self.new_tablename + '(id INTEGER PRIMARY KEY)')
for field in self.new_fieldname:
cur.execute('ALTER TABLE ' + self.new_tablename + ' ADD ' + field)
with open(self.filename, 'r', encoding='latin-1') as self.the_file:
status = True
#_keynumber=1
while status:
_row = self._next_line()
if _row:
_entry_list = _row.split(',')
# add space after text line comma for formatting
_entry_list = ', '.join(_entry_list)
#print(_entry_list)
#entries = {'row': _keynumber, 'entry': _entry_list}
#row_entry = "INSERT INTO " + self.new_tablename + " VALUES(" + _entry_list + ")"
cur.execute("INSERT INTO " + self.new_tablename + " VALUES(" + _entry_list + ")")
#_colrange = range(_colamount)
#_keynumber+=1
else:
status = False
con.commit()
В cur.execute (строка "INSERT INTO" ... (примерно на 6 строк вверх) я получаю эту ошибку: ** cur.execute ("INSERT INTO" + self.new_tablename + "VALUES ("+ _entry_list +") ") sqlite3.OperationalError: near". ": синтаксическая ошибка **
Я изменил это во многих отношениях. Одно время у меня было целое" INSERT INTO ...VALUES .... "string в качестве переменной и использовал
cur.execute(*variable*)
, когда я сделал это таким образом, ошибка была такой же, за исключением того, что« OperationalError: near ».» Был «OperationalError: near» of »..... и нигде не было 'of'.
Я действительно смущен и расстроен. Кто-то сломал это для моего удовольствия ??
Спасибо F
, текстовый файл выложил строкиЧтение настроено так: Большая звезда в Голливуде, Сандра Дикинсон
, поэтому я решилчто если я использую .join (), чтобы поставить пробел после запятой, то строка будет эквивалентна двум ЗНАЧЕНИЯМ для оператора INSERT INTO.