Я пытался использовать модуль MySQLdbsocket python для отправки команд MySQL с помощью модуля сокета. Команда, отправленная с клиента, выполняется на сервере, но только после того, как код клиента будет уничтожен. Как изменить код, чтобы сервер выполнял и отправлял команду клиенту?
Я пытался закрыть соединение, но это не сработало.
Сервер:
import socket
import MySQLdb
import time
class Server():
def __init__(self, host, port, listen):
self.host = host
self.port = port
self.listen = listen
def connect(self, dbconfig):
self.cnx = socket.socket()
self.cnx.bind((self.host, self.port))
self.cnx.listen(self.listen)
self.c, self.addr = self.cnx.accept()
self.conn = MySQLdb.connect(**dbconfig)
self.cursor = self.conn.cursor()
def send(self, msg):
self.msg = msg
self.c.send(self.msg)
def receiveEx(self, int):
self.int = int
recv = self.c.recv(self.int)
if recv == "" or recv == " ":
pass
else:
self.cursor.execute(recv)
self.conn.commit()
results = self.cursor.fetchall()
self.throw = self.c.recv(self.int) + " <:> " + str(results)
return self.throw
def kill(self):
self.c.close()
self.cursor.close()
self.conn.close()
#TEST
dbconfig = {'host' : '127.0.0.1',
'user': 'root',
'password' : 'toor',
'database' : 'MYtestDB'}
serv = Server("192.168.1.6", 80, 5)
serv.connect(dbconfig)
msg = serv.receiveEx(1024)
print(msg)
serv.send(msg)
time.sleep(20)
serv.kill()
Клиент:
import socket
class Client():
def __init__(self, host, port, listen):
self.host = host
self.port = port
self.listen = listen
def connect(self):
self.cnx = socket.socket()
self.cnx.connect((self.host, self.port))
def send(self, msg):
self.msg = msg
self.cnx.send(self.msg)
def receive(self, int):
self.int = int
self.get = self.cnx.recv(self.int)
return self.get
def kill(self):
self.cnx.close()
#TEST
cli = Client("192.168.1.6", 80, 5)
cli.connect()
while True:
inp = raw_input("SQL> ")
cli.send(inp)
msg = cli.receive(1024)
print(msg)
cli.kill()
Надеюсь, что сообщество может помочь. Заранее спасибо