什么是 PyMySQL?
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库, Python2 中则使用 mysqldb.
PyMySQL 安装
pip install PyMySQL
数据库连接
连接数据库前, 请先确认以下事项:
已经创建了数据库 TESTDB
- mysql> desc stu;
- +-------+--------------+------+-----+---------+----------------+
- | Field | Type | Null | Key | Default | Extra |
- +-------+--------------+------+-----+---------+----------------+
- | id | int(100) | NO | PRI | NULL | auto_increment |
- | name | varchar(100) | NO | | NULL | |
- | age | int(100) | NO | | NULL | |
- +-------+--------------+------+-----+---------+----------------+
- # 打开数据库连接
- conn = pymysql.connect(host="192.168.1.48", port=3306, user="root", passwd="123456", db="TESTDB")
- # 使用 cursor() 方法获取操作游标
- cus = conn.cursor()
- sql = "select * from stu;"
- # 使用 execute 方法执行 SQL 语句
- cus.execute(sql)
- # 使用 fetchone() 方法获取一条数据
- result = cus.fetchall()
- print(result)
- # 关闭游标连接
- cus.close()
- # 关闭数据库连接
- conn.close()
执行以上脚本输出结果如下:
((1, 'a', 12), (2, 'b', 13))
mysql 事物
MySQL 事务主要用于处理操作量大, 复杂度高的数据. 比如说, 在人员管理系统中, 你删除一个人员, 你即需要删除人员的基本资料, 也要删除和该人员相关的信息, 如信箱, 文章等等, 这样, 这些数据库操作语句就构成一个事务!
在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务
事务处理可以用来维护数据库的完整性, 保证成批的 SQL 语句要么全部执行, 要么全部不执行
事务用来管理 insert,update,delete 语句
禁止自动提交:
- mysql> show variables like "%autocommit%";
- +---------------+-------+
- | Variable_name | Value |
- +---------------+-------+
- | autocommit | ON |
- +---------------+-------+
- 1 row in set (0.00 sec)
- mysql> SET AUTOCOMMIT=0;
- Query OK, 0 rows affected (0.00 sec)
- mysql> show variables like "%autocommit%";
- +---------------+-------+
- | Variable_name | Value |
- +---------------+-------+
- | autocommit | OFF |
- +---------------+-------+
- 1 row in set (0.00 sec)
当执行一堆 insert 语句后, 需要 commit 才能显示数据, 否则就没有 insert 成功
- import pymysql
- conn = pymysql.connect(host="192.168.1.48", port=3306, user="root", passwd="123456", db="TESTDB")
- cus = conn.cursor()
- sql_insert = "insert into stu(name,age) values('d',15);"
- cus.execute(sql_insert)
- cus.execute('commit')
- sql_select="select * from stu;"
- cus.execute(sql_select)
- # 获取第 3 条数据
- #reject=cus.fetchmany(3)
- # 获取第一条数据
- #reject=cus.fetchone()
- # 查看所有数据
- reject=cus.fetchall()
- print(reject)
- #conn.close()
实例: 通过写一个类, 这样好处就是数据库只调用一次
- import pymysql
- # 定义一个类, 构造函数写成字典形式
- class TestMysql(object):
- def init(self):
- self.dbConfig = {
- "host": "192.168.1.48",
- "port": 3306,
- "user": "root",
- "passwd": "123456",
- "db": "TESTDB"
- }
- # 多值传入,*karges 字典 args: 元组
- conn = pymysql.connect(**self.dbConfig)
- self.cus = conn.cursor()
- def select(self):
- sql_select='select * from stu;'
- self.cus.execute(sql_select)
- reject=self.cus.fetchall()
- self.cus.close()
- print(reject)
- def update(self):
- sql_update="update stu set name='e'where id=24;"
- self.cus.execute(sql_update)
- self.cus.execute('commit;')
- if name == 'main':
- conn = TestMysql()
- conn.update()
- conn.select()
来源: http://www.bubuko.com/infodetail-2590536.html