2016-10-14 145 views
2

我想在DB 2串變種Sqlite3插入查詢錯誤?

一個從產生的用戶==> H和

一個輸入插入形成聊天機器人==>乙

下面是代碼:

# 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

謝謝你,

+0

做了任何基本的調試,比如檢查你正在構建的這個正則表達式實際上是什麼樣子,以及它是否真的匹配任何東西? –

回答

1

一定要記住承諾,你所做的更改。在這種情況下:connection.commit()。除了它看起來像你取代你的connection變量。

+0

是的,我已經嘗試過這種解決方案,但有一個錯誤: –

+0

對不起,錯誤說:AttributeError:'builtin_function_or_method'對象沒有'提交'屬性 –

+0

這是因爲你設置了'connection = open'。您正在覆蓋您的連接實例。不要覆蓋該變量,因爲您需要將該數據提交給數據庫。我可以問你爲什麼你的代碼中有這條代碼? – David