Python3 Socket + Mysql的使用 - 基础案例
2021/7/7 19:07:30
本文主要是介绍Python3 Socket + Mysql的使用 - 基础案例,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Python3 Socket + Mysql的使用 - 基础案例
- 前言
- 一、下载安装Mysqldb
- 二、代码部分
- 1.Socket服务端
- 2.Socket客户端
- 数据库基本操作示例
- 总结
前言
小白个人研究成果,仅供参考
一、下载安装Mysqldb
python3 直接cmd运行
pip3 install Mysqlclien
二、代码部分
想要的结果:客户端调用服务端,获取到数据库数据
1.Socket服务端
准备工作做好后,我们准备服务端 server.py
#!/usr/bin/env python # -*- coding:utf-8 -*- import socket import MySQLdb # 服务端 if __name__ == '__main__': # 创建socket对象 sock = socket.socket() # 获取本地主机名 hostName = socket.gethostname() # 设置端口号 prot = 8081 # 绑定主机和端口 sock.bind((hostName, prot)) # 设置等待时间 sock.listen(10) # 连接数据库(ip, 用户名, 密码, 数据库名, 编码) conn = MySQLdb.connect('127.0.0.1', 'root', '123456', 'Demo', charset='utf8') # 获取操作游标 cursor = conn.cursor() cursor.execute('select * from class') data = cursor.fetchall() while True: # 获取客户端请求 clientSock, address = sock.accept() print('连接地址:%s' % address[0]) # 获取客户端消息 clientMsg = clientSock.recv(1024).decode() if '钱' in clientMsg: msg = '当前网络差,连接失败~' else: # 以[{},{}]格式返回给客户端 msg = data # 向客户端发送消息 clientSock.send(str(msg).encode()) # 关闭连接 clientSock.close() conn.close()
2.Socket客户端
#!/usr/bin/env python # -*- coding:utf-8 -*- import socket # 客户端 if __name__ == '__main__': # 创建socket连接对象 sock = socket.socket() # 获取服务端主机名(我这里是本地) serverHostName = socket.gethostname() # 连接服务端 sock.connect((serverHostName, 8081)) msg = '我要五毛钱。' msg = '我要数据' # 向服务端发送消息 sock.send(bytes(msg, encoding='utf8')) # 接受服务端消息 serverMsg = sock.recv(1024).decode() # 返回的数据是((),())格式的,所以我这边用比较蠢笨的方法去获取单个数据 # 去掉首尾的(()) msg = serverMsg[2:len(serverMsg)-2] # 根据), (分割数据 msg = msg.split('), (') # 提取出单条数据 for index in range(len(msg)): data = msg[index].split(',') print('班级名称:%s,班级编号:%s,班主任:%s' % (data[1], data[2], data[3])) # 关闭连接 sock.close() pass
数据库基本操作示例
#!/usr/bin/env python # -*- coding:utf-8 -*- import MySQLdb # python3安装命令:pip3 install Mysqlclien if __name__ == '__main__': # 连接数据库(ip, 用户名, 密码, 数据库名, 编码) conn = MySQLdb.connect('127.0.0.1', 'root', '123456', 'demo', charset='utf8') # 获取操作游标 cursor = conn.cursor() try: # 执行建表操作 - 先判断删除已存在的表再执行新建操作 cursor.execute('DROP TABLE IF EXISTS class') createSql = """CREATE TABLE `class` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `code` varchar(255) DEFAULT NULL, `teacher` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4""" cursor.execute(createSql) # 插入数据 cursor.execute("INSERT INTO `demo`.`class` (`name`, `code`, `teacher`) VALUES ('一年级一班', '20210901', '张秀梅')") cursor.execute("INSERT INTO `demo`.`class` (`name`, `code`, `teacher`) VALUES ('一年级(2)班', '20210903', '姚婷')") # 获取新增数据的ID (需在commit前调用) firstId = conn.insert_id() insertSql = "INSERT INTO `demo`.`class` (`name`, `code`, `teacher`) VALUES ('%s', '%s', '%s')" % ('一年级(3)班', '20210902', '胡启秀') cursor.execute(insertSql) # 获取最后一条新增数据的ID lastId = cursor.lastrowid # 提交数据 conn.commit() # 修改数据 cursor.execute("UPDATE `demo`.`class` SET `name` = '%s' WHERE (`id` = '%s')" % ('一年级(1)班', firstId)) conn.commit() # 删除数据 cursor.execute('DELETE FROM class WHERE id = %d' % lastId) print("删除操作中受影响的行数:", cursor.rowcount) conn.commit() # 查询数据 cursor.execute('SELECT * FROM class') datas = cursor.fetchall() for data in datas: print("ID:%d" % (data[0])) for index in range(len(data)): print(data[index]) except Exception as e: # 回滚事物 conn.rollback() print('操作异常:', e) finally: # 关闭数据库 conn.close() pass
总结
又是小白努力向上的一天!有不足之处欢迎指出。
本文参考自:https://www.runoob.com/python/python-socket.html
这篇关于Python3 Socket + Mysql的使用 - 基础案例的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-21MySQL集群部署资料:新手入门教程
- 2024-09-21MySQL集群资料:初学者入门指南
- 2024-09-21部署MySQL集群资料:新手入门教程
- 2024-09-20MySQL集群部署教程:新手入门指南
- 2024-09-20MySQL集群教程:初学者必备指南
- 2024-09-20部署MySQL集群项目实战:新手入门教程
- 2024-09-20如何部署MySQL集群:简单教程
- 2024-09-20MySQL集群部署:新手入门指南
- 2024-09-20部署MySQL集群学习:入门指南
- 2024-09-20部署MySQL集群入门教程