ОШИБКА ВСТАВКИ запроса Sqlite3?

#python #mysql #python-3.x

#питон #mysql #python-3.x

Вопрос:

я хочу вставить в свою базу данных 2 строки var

один, введенный от пользователя ==> H и

одна сгенерированная форма чат-бота==> B

Вот этот код:

 # initialize the connection to the database
sqlite_file = '/Users/emansaad/Desktop/chatbot1/brain.sqlite'
connection = sqlite3.connect(sqlite_file)
connection.create_function("REGEXP", 2, regexp)
cursor = connection.cursor()
connection.text_factory = str
connection = open

def new_data(Input,Output):
     row = cursor.execute('SELECT * FROM chatting_log WHERE user=?',(Input,)).fetchone()
     if row:
        return
     else:
        cursor.execute('INSERT INTO chatting_log VALUES (?, ?)', (Input, Output))

while True:
   print(("B:%s" % B))  
   H = input('H:')
   New_H= ' '.join(PreProcess_text(H))
   reply= cursor.execute('SELECT respoce FROM Conversation_Engine WHERE request REGEXP?',[New_H]).fetchone()
   if reply:
      B=reply[0]
      new_data(H,B)
 

Коды отлично работают при создании и выборе воспроизведения из БД, но проблема в том, что когда я возвращаюсь к таблице chatting_log в БД, данных нет?

PS: я использую python 3

Спасибо,

Комментарии:

1. выполнили какую-либо базовую отладку, например, проверили, как на самом деле выглядит это регулярное выражение, которое вы создаете, и соответствует ли оно чему-либо на самом деле?

Ответ №1:

Всегда помните о необходимости фиксации вносимых изменений. В этом случае: connection.commit() . За исключением того, что похоже, что вы переопределили свою connection переменную.

Комментарии:

1. да, я пробовал это решение, но есть ошибка:

2. извините, ошибка гласит: AttributeError: объект ‘builtin_function_or_method’ не имеет атрибута ‘commit’

3. Это потому, что вы установили connection=open . Вы перезаписываете свой экземпляр подключения. Не перезаписывайте эту переменную, потому что она понадобится вам для фиксации ваших данных в базе данных. Могу я спросить, почему у вас есть эта строка в вашем коде?