mysql连接模块
什么是 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://blog.51cto.com/jacksoner/2113454