python协程池操作mysql_python操作mysql数据库

1. IO多路复用

2. paramiko

3. MySQL - SQL语句 - Python操作MySQL - pymysql模块

上节回顾:

- 线程 - 锁 - 池

- 进程 - 锁 - 池 - 数据共享

- 协程 - 对线程的分片(微线程) - IO多路复用

r,w,e = select.select([socket对象,...],[],[],1) - 同时监听多个socket对象,是否:可读、可写、异常 今日内容:

1. IO多路复用 - 监听多个socket变化 - socket服务端 IO多路复用 + socket 来实现Web服务器

a. 服务端优先运行

b. 浏览器: http://...... socket + send('协议..')

c. 获取客户端发来的url,根据URL不同响应数据

d. 断开链接

产出:

a. 浏览器发送数据:按照指定规则

b. 监听多个socket对象 、

c. Web框架开发者 业务开发者

d. 模块独立化 参考博客:http://www.cnblogs.com/wupeiqi/p/6536518.html - socket客户端(爬虫) 利用一个线程,同时发送n个请求(异步非阻塞模块)

url_list [ http://www.baidu.com, http://www.baidu1.com, http://www.baidu2.com, http://www.baidu3.com, ]

a. 循环列表,为每一个URL生成Socket对象

b. 每一个socket对象,向远程发送链接请求 connect: 阻塞

c. 如果连接: 发送数据:遵循格式

d. 获取响应内容

e. 关闭 注意:可读和可写状态 参考博客:http://www.cnblogs.com/wupeiqi/articles/6229292.html

产出:

1. setblockint(False)

2. select监听其他对象: def fileno():...

3. gevent,twisted,asycio ---> 单线程并发发送Http请求

2. Paramiko 参考博客:http://www.cnblogs.com/wupeiqi/articles/5095821.html - 是一个模块,socket,SSH - Python代码,实现远程服务器操作

功能:

a. 使用用户名密码: - 命令 SSHClient -> Transport - 文件 Transport

b. 使用用户名秘钥: - 命令 SSHClient -> Transport - 路径,也支持字符串形式 - 文件 Transport ====> SSH帮助类 <====

c. 执行创建session # 堡垒机 Bug

产出:

- 链接远程,操作:命令,文件

3. MySQL - 什么是MySQL 服务端:

a.socket服务端运行,监听:IP和端口

b.获取客户端发送的数据: asdfasdfasdfasdfasdfasdf

c.解析

d.去文件中做操作

客户端:

a.socket客户端:基于各种语言的客户端

b.验证 c.发送命令(学习规则SQL语句) - 安装

服务端:

客户端: - 基本使用:

a. 申请 用户: 授权: 用户名,数据库(文件夹),表(文件),增删改查,IP

b. 连接 mysql -u root -h c1.com -p asdfasdf

mysql -u wupeiqi -h 192.168.12.111 -p 123

c. 规则

文件夹(数据库):

create database db1 default charset utf8; drop database db1; show databases; use db1;

文件(表):

show tables; create table tb1( id int not null auto_increment primary key, name char(20) null default 1, age int not null)engine=innodb default charset utf8;

# 增

insert into tb1(name,age) values('alex',18);

# 删

delete from tb1 where id>1;

# 改

update tb1 set age=168 where id=2;

#查

select * from tb1;

外键:foreign key 一对多

create table deparment( id int not null auto_increment primary key, title char(32) null ) create table person( id int not null auto_increment primary key, username char(32) null , age int not null, deparment_id int not null, constraint fk_cc foreign key (deparment_id) references deparment(id) )

双向的外键:

多对多 create table deparment( id int not null auto_increment primary key, title char(32) null ) create table host( id int not null auto_increment primary key, ip char(32) null, port char(32) null ) create table de_2_host( id int not null auto_increment primary key, did int not null, hid int not null, constraint fk_did_deparment foreign key (did) references deparment(id), constraint fk_hid_host foreign key (hid) references host(id) )

连表:

select * from person; select * from person left join deparment on person.deparment_id = deparment.id

# 1 alex 18 1 1 咨询

2 oldboy 68 3 3基础

select id from deparment where title = "基础" select hostid from host_deparment where deparment_id=1111 select * from host id in (1,2,3) #######

4. pymysql pip3 install pymysql # 内部socket import pymysql # 创建连接 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')

# 创建游标

cursor = conn.cursor() username = input('请输入用户名:') pwd = input('请输入密码:')

# 执行SQL,并返回受影响行数

#effect_row = cursor.execute("select * from userinfo where username=%s and pwd = %s", (username,pwd,)) # root or 1==1 --

# adfasdf # sql = "select * from userinfo where username=%s and pwd = %s" %(username,pwd,) # select * from userinfo where username=root or 1==1 -- and pwd = %s #effect_row = cursor.execute(sql)

# 提交,不然无法保存新建或者修改的数据 conn.commit()

# 关闭游标 cursor.close() # 关闭连接 conn.close()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值