Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-socketserver&;sqlite3:Can';不要将消息放入数据库_Python_Sqlite_Socketserver - Fatal编程技术网

Python-socketserver&;sqlite3:Can';不要将消息放入数据库

Python-socketserver&;sqlite3:Can';不要将消息放入数据库,python,sqlite,socketserver,Python,Sqlite,Socketserver,我一直面临着无法将通过服务器发送的数据放入数据库的问题。我使用python的socketserver和sqlite3类作为服务器和数据库 这是我的密码: import socketserver import sqlite3 conn = sqlite3.connect('messages.db', check_same_thread=False) c = conn.cursor() c.execute('CREATE TABLE IF NOT EXIST

我一直面临着无法将通过服务器发送的数据放入数据库的问题。我使用python的socketserver和sqlite3类作为服务器和数据库

这是我的密码:

    import socketserver
    import sqlite3

    conn = sqlite3.connect('messages.db', check_same_thread=False)
    c = conn.cursor()
    c.execute('CREATE TABLE IF NOT EXISTS messagesTable(msg BLOB)')

    class MyTCPHandler(socketserver.StreamRequestHandler):

        def handle(self):
            # self.request is the TCP socket connected to the client
            self.data = self.request.recv(1024).strip()
            print("{} wrote:".format(self.client_address[0]))
            print(self.client_address[0]) #the client's ip
            print(self.data)
            # just send back the same data, but upper-cased
            self.request.sendall(self.data.upper())

        def put_database(self):
            c.execute("INSERT INTO messagesTable(msg) VALUES(?)", self.data)
            conn.commit()


    if __name__ == "__main__":
        HOST, PORT = "localhost", 8888

        # Create the server, binding to localhost on port 8888
        server = socketserver.TCPServer((HOST, PORT), MyTCPHandler)
        database = MyTCPHandler.put_database()
        server.serve_forever()
它从客户端很好地发送消息,并设法发回正确的数据,这使我确信服务器至少工作正常。但是,数据似乎没有写入数据库messages.db
我是python新手,非常需要帮助。我的脚本有什么问题吗?或者我需要做什么调整?谢谢。

你似乎没有在任何地方调用put_数据库方法。我已经更新了它,你能看一看吗?这没有意义,你确实需要在实际接收数据时调用它吗?所以,我把它放在handle方法上了?如果你想让事情发生在对消息的响应上,那么是的,您需要您的代码在收到消息时触发。