学习Python的过程中两个非常有用的模块,简单举个例子。
1 安装模块socket,pymysql
安装pymysql模块
[root@wzlvm ~]# pip install pymysql
Downloading/unpacking pymysql
Downloading PyMySQL-0.7.9.tar.gz (70kB): 70kB downloaded
Running setup.py egg_info for package pymysql
Installing collected packages: pymysql
Running setup.py install for pymysql
Could not find .egg-info directory in install record for pymysql
Successfully installed pymysql
Cleaning up...
安装socket同上
2 模拟一个拨打10086 客服的场景,并把信息记录下来保存如数据库
2.1 开发socket服务端
[root@wzlvm mypython]# cat socket_server.py
#!/data/program/python2.7/bin/python2.7
#_*_ coding:utf8 _*_
#
#
#
# 2016
# aut wangzilong
#
#
#
import os
import sys
import re
# 1 导入socket模块
import socket
# 2 配置IP地址 127.0.0.1 和端口 8888
ip_port = ('127.0.0.1',8888)
# 3 socket 实例化
sk = socket.socket()
# 4 socket绑定IP地址和端口
sk.bind(ip_port)
# 5 监听
sk.listen(10)
# 6 循环接受信息
while True :
conn,adress = sk.accept()
conn.sendall('欢迎进入10086,进入下一步请按0')
flag = True
while flag :
data = conn.recv(1024)
if data == 'exit' :
flag = False
elif data == 0 :
conn.sendall('*********')
else :
conn.sendall(data)
conn.close()
2.2 开发socket 客户端
[root@wzlvm mypython]# cat socket_client.py
#!/data/program/python2.7/bin/python2.7
#_*_ coding:utf8 _*_
#
#
#
# 2016
# aut wangzilong
#
#
#
import os
import sys
import re
# 1 导入模块 socket
import socket
# 2 设置IP地址 127.0.0.1 和IP地址8888
ip_port = ('127.0.0.1',8888)
# 3 socket实例化
sk = socket.socket()
# 4 链接
sk.connect(ip_port)
# 5 设置超时时间
sk.settimeout(10)
# 6 循环发送信息和指令
while True :
data = sk.recv(1024)
print 'receive',data
inp = raw_input('请输入:')
sk.sendall(inp)
if inp == 'exit' :
break
sk.close()
2.3 运行测试socket 功能
# 运行服务端
[root@wzlvm mypython]# ./socket_server.py
# 运行客户端
[root@wzlvm mypython]# ./socket_client.py
receive 欢迎进入10086,进入下一步请按0
请输入:0
receive 0
请输入:acd^H^H^H^H
receive acd
请输入:nihao
receive nihao
请输入:你好
receive 你好
请输入:exit
以上验证socket 功能已经成功
2.3 编写插入数据库的Python脚本
[root@wzlvm mypython]# cat socket_database.py
#!/data/program/python2.7/bin/python2.7
#_*_ coding:utf8 _*_
import os
import sys
import pymysql
# 1 定义类
class insert ():
# 定义 自定义函数
def base1 (self,tsql):
# 链接数据库
db = pymysql.connect(host='127.0.0.1',user='user3',password='123456',db='base1')
# 新建游标
cur = db.cursor()
# 执行SQL
cur.execute(tsql)
# 关闭游标
cur.close()
# 关闭链接
db.close()
2.4 在 socket 服务端中应用2.3的Python,并调用2.3中的base1方法,传入SQL,插入数据库
import socket_database
中间代码省略,参见之前的服务器脚本
conn.sendall('*********')
else :
i += 1
str = "insert into table1(id,remark)values(%d,'%s')" %(i,data)
obj = socket_database.insert()
obj.base1(tsql=str)
conn.sendall(data)
2.5 实施验证
运行socket服务端: ./socket_server.py
运行socket 客户端:
[root@wzlvm mypython]# ./socket_client.py
receive 欢迎进入10086,进入下一步请按0
请输入:0
receive 0
请输入:最后一次测试^H^H^H^H
receive 最后一次测试
请输入:over
receive over
请输入:exit
[root@wzlvm mypython]#
查询数据库中的表,是否已经插入到数据库中:
mysql> select * from table1;
+------+------------------------+
| id | remark |
+------+------------------------+
| 1 | 0 |
| 2 | |
| 3 | n |
| 4 | 你好 |
| 5 | 世界 |
| 6 | 你好10086 |
| 1 | 0 |
| 2 | 最后一次 |试
| 3 | over |
+------+------------------------+
9 rows in set (0.00 sec)
验证成功