文档章节

socket和pymysql

胡子叭槎
 胡子叭槎
发布于 2016/11/02 22:52
字数 708
阅读 24
收藏 0
点赞 0
评论 0

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

验证成功

© 著作权归作者所有

共有 人打赏支持
胡子叭槎
粉丝 21
博文 126
码字总数 132913
作品 0
成都
数据库管理员
Pycharm开发工具里面python3连接MySQL问题

参考地址:http://www.runoob.com/python3/python3-mysql.html 以前的代码是python2.7开发的,Python2中则使用mysqldb,现在准备用python3,则用不了mysqldb组件;PyMySQL 是在 Python3.x 版...

mchdba ⋅ 04/18 ⋅ 0

mysql闪回工具binlog2sql 安装使用

软件包下载地址:链接:https://pan.baidu.com/s/15dDeGufVWOgVrfATGWBzaA 密码:gnz8 DBA或开发人员,有时会误删或者误更新数据,如果是线上环境会影响较大,这就需要能快速回滚;而MySQL闪回...

DB蜗牛 ⋅ 05/09 ⋅ 0

pymysql 'latin-1' codec can't encode character

在使用pymysql查询时发生报错 UnicodeEncodeError: 'latin-1' codec can't encode character 'u3001' in position 85: ordinal not in range(256) 原因是pymysql默认的编码是latin,而我使用的......

bobway ⋅ 前天 ⋅ 0

Python使用PyMysql模块报错:lock wait timeout exceeded; try restarting transactio

呵呵,我只想说:关于这个问题我整了两个星期,关于这个问题的原因,从网上看到的很多文章全都是说要conn.commit(), 但是我在程序里面已经commit()了,最后定位到的问题是Pymysql在多线...

a2011480169 ⋅ 04/28 ⋅ 0

window 安装 pymysql

window 安装 pymysql 一、下载安装python-win 点击打开链接 二、下载安装setuptools 点击打开链接 三、下载安装 mysql 点击打开链接 四、安装pymysql 在python中执行python ez_setup.py文件,...

推荐码发放 ⋅ 05/07 ⋅ 0

为什么pymysql执行SQL语句提示成功但实际并没有操作数据库?

开发环境:Anaconda3+PyCharm2018 问题:使用pymysql插入数据提示成功,连接数据库发现并没有数据。 原因: pymysql在连接数据库的时候会有一个参数autocommit默认为False,表示执行完SQL语句...

棋帅小七 ⋅ 05/19 ⋅ 0

关于使用requests爬取酷狗hot500的案例

关于使用requests爬取酷狗hot500的案例 1. 案例环境: python版本:python3.x; IDE:anaconda-spider;(已安装好需要的requests,bs4库等) 数据库:mysql.5.7 工具包:pymsql(安装将补充)...

meiqi0538 ⋅ 03/07 ⋅ 0

ORM、SQLAlchemy数据库操作

ORM介绍 背景: 用底层的sql写的话,相当于通过pymysql 游标的方式连接“http://blog.51cto.com/jacksoner/2113454 ”,为了避免把sql语句写死在代码里,有没有一种方法直接把原生sql封装好了...

jiekegz ⋅ 05/11 ⋅ 0

python3 django配置数据库(mysql)

python3 django配置数据库(mysql) python3 下的mysql驱动 django 连接mysql默认驱动是MySQLdb,MySQLdb没有支持python3的版本,如果使用python3.x版本时,django连接mysql的方法 1、使用p...

代金券优惠 ⋅ 04/24 ⋅ 0

openstack之(一)基础环境

Openstack的概述Openstack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。 Openstack是一个开源的云计算管理平台项目,由...

runs0517 ⋅ 05/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

Spring boot 项目打包及引入本地jar包

Spring Boot 项目打包以及引入本地Jar包 [TOC] 上篇文章提到 Maven 项目添加本地jar包的三种方式 ,本篇文章记录下在实际项目中的应用。 spring boot 打包方式 我们知道,传统应用可以将程序...

Os_yxguang ⋅ 昨天 ⋅ 0

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部