文档章节

socket和pymysql

胡子叭槎
 胡子叭槎
发布于 2016/11/02 22:52
字数 708
阅读 27
收藏 1

        学习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)

验证成功

© 著作权归作者所有

共有 人打赏支持
胡子叭槎
粉丝 22
博文 128
码字总数 134275
作品 0
成都
数据库管理员
私信 提问
NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection

anaconda2/bin/pip install pymysql Collecting pymysql Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError(': Failed t......

知行合一1
2017/05/09
2.1K
0
pymysql.err.DataError: (1265, u"Data truncated for column

File "E:\ProgramData\Anaconda2\lib\site-packages\pymysql\cursors.py", line 193, in executemany self._get_db().encoding) File "E:\ProgramData\Anaconda2\lib\site-packages\pymysql\......

知行合一1
2017/06/26
391
0
ymysql.err.InternalError: (1205, u'Lock wait timeout exceeded; try restarting transaction')

conn.execute(sql) File "E:\ProgramData\Anaconda2\lib\site-packages\pymysql\cursors.py", line 166, in execute result = self._query(query) File "E:\ProgramData\Anaconda2\lib\site-......

知行合一1
2017/05/26
260
1
1062, u"Duplicate entry '10-21806-2-21' for key 'PRIMARY'")

raceback (most recent call last): File "D:\Users\Administrator\workspace\userLable\FavorCatelab.py", line 175, in insertDatas_rcmd(labrow) File "D:\Users\Administrator\workspace......

知行合一1
2017/06/13
140
0
python 连接 mysql

Python 3.x 连接数据库(pymysql 方式) ==================pymysql=================== 由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 pymysql 模块。 py...

jackwxh
2018/06/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据教程(11.6)hadoop2.9.1平台上仓库工具hive2.3.4搭建

上一篇文章介绍了hive的原理以及实现机。本篇博客开始,博主将分享数据仓库hive工具搭建全过程。 一、安装Hive (1)、下载Hive和环境准备: Hive官网地址:http://hive.apache.org/index.html...

em_aaron
7分钟前
0
0
架构师和产品经理的区别

架构师和产品经理工作职责与内容异同如下:   一、架构师主要工作、职责如下:   1、协助部门经理制定相关技术开发规范;   2、带领团队持续改进产品的整体架构、功能模块、开发需求,...

咔咔大韦
31分钟前
1
0
第1章

背景:因为最近在考教师资格证,考的是计算机学科,所以学科考的是:信息技术学科知识与教学能力;因此图书馆借了一本书,把最基本的知识看一遍,为之后的笔试和面试做充足的准备。 大学计算...

怪咖先生forever
今天
1
0
element-ui之el-collapse-transition(折叠展开动画)源码解析学习

项目中发现同事使用了element-ui的el-collapse-transition来做折叠展开效果,打开源码看了下发现挺有意思,来解析学习一番。 el-collapse-transition的引入方式 // fade/zoom 等import 'e...

学霸猫
今天
1
0
解释器模式_实战

前言 解释器模式是什么?这个设计模式其实比较冷门,不太会解释,用例子说明把。解释器模式一般用在sql,xml,json解析等场景。比如说你有一个json对象,你要获取这个对象中任意一个节点的值。...

grace_233
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部