pymysql 是 Python3 链接 MySQL 的一个模块,常见用法以下:python
[root@localhost ~]$ pip3 install pymysql # 安装 pymysql 模块
In [1]: import pymysql In [2]: conn = pymysql.connect(host='127.0.0.1', user='root', passwd='123456') # connect()用于链接MySQL数据库,结果返回一个链接对象 # 经常使用的链接参数有:host 、user 、passwd 、db 、port In [3]: cur = conn.cursor() # 建立游标,用来存放执行SQL语句所检索出来的结果集 In [4]: cur.execute('show databases') # 使用游标来执行SQL语句,8L表示结果有8行,结果会存存储在游标中 Out[4]: 8L In [5]: cur.fetchone() Out[5]: ('information_schema',) # fetchone()用于查看一条结果 In [6]: cur.fetchmany(3) Out[6]: (('mysql',), ('performance_schema',), ('test',)) # fetchmany()用于查看多条结果 In [7]: cur.fetchall() Out[7]: (('test1',), ('test2',), ('test3',), ('wordpress',)) # fetchall()用于查看全部结果
In [8]: cur.close() # 关闭游标
In [9]: conn.close() # 关闭数据库链接
在 Python 中的写法:mysql
#!/usr/bin/env python3 #-*- coding: utf-8 -*- import pymysql def connectMySQL(): db_config = { 'host': '127.0.0.1', 'port': 3306, 'user': 'root', 'passwd': '123456', 'db': 'mysql', 'charset': 'utf8', } conn = pymysql.connect(**db_config) return conn if __name__ == '__main__': conn = connectMySQL() cur = conn.cursor() try: cur.execute('show tables;') result = cur.fetchall() print(result) cur.close() conn.commit() <--- 这里使用MySQL事务,若是执行SQL语句成功则提交,若是执行失败则回滚 except: conn.rollback() print("执行SQL语句失败!") finally: conn.close()
使用 MySQL 链接池:sql
咱们对数据库进行查询/插入/更新等操做,须要先链接数据库,建立数据库链接是一个很耗时的操做,为了不屡次链接 MySQL 数据库,咱们能够使用 MySQL 链接池;
MySQL 链接池(Connection Pooling)是 MySQL 程序启动时创建足够的数据库链接,并将这些链接组成一个链接池,由 MySQL 程序动态地对池中的链接进行申请,使用,释放。数据库
[root@localhost ~]$ pip3 install DBUtils # 安装DBUtils
#!/usr/bin/env python3 #-*- coding: utf-8 -*- import pymysql from DBUtils.PooledDB import PooledDB def connectMySQL(): db_config = { 'host': '127.0.0.1', 'port': 3306, 'user': 'game', 'passwd': 'cqbygame', 'db': 'mysql', 'charset': 'utf8', } pool = PooledDB(pymysql, 5, **db_config) # 建立链接池,指定建立5个数据库链接 conn = pool.connection() # 之后每次须要链接数据库就用connect()函数获取链接 return conn if __name__ == '__main__': conn = connectMySQL() cur = conn.cursor() try: cur.execute('show tables;') result = cur.fetchall() print(result) cur.close() conn.commit() except: conn.rollback() print("执行SQL语句失败!") finally: conn.close()