xindanze9661 2017-04-06 11:45 采纳率: 50%
浏览 1974

关于把socket数据写入数据库的问题

我的思路是这样的,之前的想法是:把接收过来的socket数据,充当sql的字段属性变量,来实现数据写入功能。但是几经波折,发现难题攻克不了。现在,我换了另外一种思路:事先把数据库的插入数据命令写在socket里面,到了python直接执行接收到的插入命令就完成写入的操作。具体代码如下:运行没有报错,但是写入也不成功。求各路大神指导一下(Ps: 然后,我发送:"""INSERT money(name,account, saving, expend, income) VALUES ('aaa', '111', '222', '222', '2000')""" 这段数据,python就写入数据。 )
import socket
import time
import pymysql

host = ''
port = 80
bufsize = 1024
addr = (host, port) # host设定为空,表示可以与任何ip的socket在端口51423通信

设置socket,AF_INET表示是IPV4标准,SOCK_STREAM是TCP传输协议

tcpSerSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpSerSock.bind(addr)
tcpSerSock.listen(1)
quit = False
shutdown = False

while True:
print('等待数据中...')
tcpCliSock, addr = tcpSerSock.accept() # 不断监听获取新的客户端连接
print('数据来自:', addr)
db = pymysql.connect("localhost", "root", "000000", "money")#连接数据库
cursor = db.cursor()#获取光标
while True:
# 与客户端建立连接之后,获取客户端传来的数据
data = tcpCliSock.recv(bufsize)
data = data.decode('gbk')
sql = data #把接收到的数据(已经写好的插入命令模板)复制给sql
try:
# 执行sql语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
db.rollback()

    if not sql:
        break
    ss = '[%s] %s' % (time.ctime(), data)
    tcpCliSock.sendall(ss.encode('gbk'))
    print(ss)
    if data == 'bye':
        quit = True
        break
    elif data == 'shutdown':
        shutdown = True
        break
print('Bye-bye:[%s:%d]' % (addr[0], addr[1]))
tcpCliSock.close()

if shutdown:
    break

tcpSerSock.close()
print('Server has been closed')


  • 写回答

3条回答 默认 最新

  • ——。—— 2017-04-07 02:07
    关注

    不太懂python不过insert sql是不是写错了,应该是insert into tablename 吧?

    评论

报告相同问题?

悬赏问题

  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元