开发者社区> 余二五> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

19Python标准库系列之MySQL模块

简介:
+关注继续查看

Python标准库系列之MySQLdb模块


MySQLdb模块的主要功能就是提供Python操作MySQL数据库的一个API,通过MySQLdb模块我们可以对数据库进行,,,, 等操作.

MySQLdb工作流程如下:

wKiom1kZRP2zQMJmAACkpY_HEDE954.png


connection

connection方法用于创建客户端与数据库的网络连接.

语法:

1
MySQLdb.Connect(参数)

参数

参数 类型 说明
host 字符串 MySQL服务器地址
port 整型 MySQL服务器端口号
user 字符串 MySQL数据库用户名
passwd 字符串 MySQL数据库密码
db 字符串 MySQL数据库库名
charset 字符串 连接所使用的字符集

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 导入MySQLdb模块
>>> import MySQLdb
# 创建一个Connect连接
>>> conn = MySQLdb.Connect(host='127.0.0.1', user='root', passwd='as', db='USER', port=3306, charset="utf8")
>>> cursor = conn.cursor()
>>> print(cursor)
<MySQLdb.cursors.Cursor object at 0x7f4af5e15550>
>>> print(conn)
<_mysql.connection open to '127.0.0.1' at 15b1518>
# 关闭连接
>>> conn.close()
>>> print(conn)
<_mysql.connection closed at 15b1518>

connection对象支持的方法

方法名 说明
cursor() 使用该连接创建并返回游标
commit() 提交当前事务
rollback() 回滚当前事务
close() 关闭连接

cursor

cursor用户执行查询和获取结果,执行流程如下:

wKioL1kZRWrjg_a0AABR88IK1gw619.png

cursor对象所支持的方法

参数名 说明
execute(“SQL”) 执行的SQL语句
fefchone() 获取结果的下一行
fefchmany(size) 获取结果的下几行
fefchall() 获取结果剩下的所有行
rowcount 最近一次execute返回数据的行数或影响的行数
close() 关闭游标对象

事务

访问额更新数据库的一个程序执行单元,执行单元指的就是很多操作的集合,里面的每个操作都是用来访问个更新数据库.

  • 原子性: 事务中包括的诸多操作要么都做要么都不做

比如银行转账,A用户向B用户转账100,A-100和B+100这两个操作,要么都做,要么都不操作

  1. 一致性: 事务必须使数据库从一致性状态变到另一个一致性状态

  2. 隔离性: 一个事务的执行不能被其他事务干扰

  3. 持久性: 事务一旦提交,他对数据库的改变是永久性的

开发中怎样使用事务?

  1. 关闭自动commit: 设置conn.autocommit(False),MySQLdb默认已经为False

  2. 正常结束事务: conn.commit()

  3. 异常结束事务: conn.rollback()

实例

  • SELECT查询数据

先创建一个user表:

1
2
3
4
5
6
7
CREATE DATABASE USER;
USE USER;
CREATE TABLE `user` (
`userid` INT(11) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(100) DEFAULT NULL,
PRIMARY KEY (`userid`)
) ENGINE=INNODB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

插入以下内容

1
2
3
4
5
INSERT INTO user(userid, username) VALUES(1'name1');
INSERT INTO user(userid, username) VALUES(2'name2');
INSERT INTO user(userid, username) VALUES(3'name3');
INSERT INTO user(userid, username) VALUES(4'name4');
INSERT INTO user(userid, username) VALUES(5'name5');

查看数据

1
2
3
4
5
6
7
8
9
10
11
mysql> SELECT * FROM user;
+--------+----------+
| userid | username |
+--------+----------+
|      1 | name1    |
|      2 | name2    |
|      3 | name3    |
|      4 | name4    |
|      5 | name5    |
+--------+----------+
5 rows in set (0.00 sec)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>>> import MySQLdb
>>> conn = MySQLdb.Connect(host='127.0.0.1', user='root', passwd='as', db='USER', port=3306, charset="utf8")
>>> cursor = conn.cursor()
>>> SQL = "SELECT * FROM user"
# 返回获取到的多少行
>>> cursor.execute(SQL)
5
# 输出获取到的行数
>>> print(cursor.rowcount)
5
# 返回第一条数据
>>> cursor.fetchone()
(1'name1')
# 返回两条数据
>>> cursor.fetchmany(2)
((2'name2'), (3'name3'))
# 返回剩下的所有数据
>>> cursor.fetchall()
((4'name4'), (5'name5'))
  • insert/update/delete

流程图:

wKiom1kZRdOwAJeGAABiorxDusA534.png

1
2
3
4
5
6
7
8
9
10
11
12
>>> import MySQLdb
>>> conn = MySQLdb.Connect(host='127.0.0.1', user='root', passwd='as', db='USER', port=3306, charset="utf8")
>>> cursor = conn.cursor()
>>> cursor.execute("INSERT INTO user(userid, username) VALUES(50, 'name50')")
1
>>> cursor.execute("UPDATE user SET username='as' WHERE userid=1")
1
>>> cursor.execute("DELETE FROM user WHERE userid=2")
1
>>> conn.commit()
>>> cursor.close()
>>> conn.close()

查看数据库表内容

1
2
3
4
5
6
7
8
9
10
11
mysql> SELECT * FROM user;
+--------+----------+
| userid | username |
+--------+----------+
|      1 | as       |
|      3 | name3    |
|      4 | name4    |
|      5 | name5    |
|     50 | name50   |
+--------+----------+
5 rows in set (0.00 sec)









本文转自 Edenwy  51CTO博客,原文链接:http://blog.51cto.com/edeny/1925803,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python:mysql-replication监控MySQL的binlog变动
Python:mysql-replication监控MySQL的binlog变动
0 0
Python:使用 mysqlsmom 模块实时同步MySQL数据到ElasticSearch
Python:使用 mysqlsmom 模块实时同步MySQL数据到ElasticSearch
0 0
进阶——python——数据库处理之MySQL
进阶——python——数据库处理之MySQL
0 0
Python 连接MariaDB的一些小问题Cant connect to MySQL server
Python 连接MariaDB的一些小问题Cant connect to MySQL server
0 0
Python DB-API 规范及 MySQL Connector/Python 实现
Python DB-API 规范及 MySQL Connector/Python 实现
0 0
猿创征文|Python基础——Visual Studio版本——第六章 MySQL操作
猿创征文|Python基础——Visual Studio版本——第六章 MySQL操作
0 0
Python基础——PyCharm版本——第九章、MySQL操作(核心4)
Python基础——PyCharm版本——第九章、MySQL操作(核心4)
0 0
11_mysql与Python交互_1
11_mysql与Python交互_1
0 0
MySQL数据库基础学习小终结:连接查询、表结构的修改、约束条件、MySQL与python交互3
MySQL数据库基础学习小终结:连接查询、表结构的修改、约束条件、MySQL与python交互
0 0
MySQL数据库基础学习小终结:连接查询、表结构的修改、约束条件、MySQL与python交互2
MySQL数据库基础学习小终结:连接查询、表结构的修改、约束条件、MySQL与python交互
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
给运维工程师的Python实战课
立即下载
Python 脚本速查手册
立即下载
ACE 区域技术发展峰会:Flink Python Table API入门及实践
立即下载