再找"/>
PyMySQL 使用笔记,这个感觉写的挺全面,免得以后自己再找
这个感觉写的挺全面,免得以后自己再找
原文地址:
connections 模块
类:Connection
- 用法:执行
pymysql.connect()
得到。而不是构造函数Connection()
。 pymysql.connect()
的参数即为Connection()
构造函数的参数。- 构造函数:
pymysql.connections.Connection(self,host=None, # 要连接的主机地址user=None, # 用于登录的数据库用户password='', # 密码database=None, # 要连接的数据库port=0, # 端口,一般为 3306unix_socket=None, # 选择是否要用unix_socket而不是TCP/IPcharset='', # 字符编码sql_mode=None, # Default SQL_MODE to use.read_default_file=None, # 从默认配置文件(my.ini或myf)中读取参数conv=None, # 转换字典use_unicode=None, # 是否使用 unicode 编码client_flag=0, # Custom flags to send to MySQL. Find potential values in constants.CLIENT.cursorclass=<class 'pymysql.cursors.Cursor'>, # 选择 Cursor 类型init_command=None, # 连接建立时运行的初始语句 connect_timeout=10, # 连接超时时间,(default: 10, min: 1, max: 31536000)ssl=None, # A dict of arguments similar to mysql_ssl_set()'s parameters.For now the capath and cipher arguments are not supported. read_default_group=None, # Group to read from in the configuration filepress=None, # 不支持named_pipe=None, # 不支持no_delay=None, # autocommit=False, # 是否自动提交事务db=None, # 同 database,为了兼容 MySQLdbpasswd=None, # 同 password,为了兼容 MySQLdblocal_infile=False, # 是否允许载入本地文件max_allowed_packet=16777216, # 限制 `LOCAL DATA INFILE` 大小defer_connect=False, # Don't explicitly connect on contruction - wait for connect call.auth_plugin_map={}, #read_timeout=None, # write_timeout=None, bind_address=None # 当客户有多个网络接口,指定一个连接到主机)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 重要函数
函数 | 说明 |
---|---|
cursor(cursor = None) | 创建一个游标 |
commit() | 事务提交,如果没有设为自动提交,则每次操作后必须提交事务,否则操作无效。 |
rollback() | 操作出错时,可以用这个函数回滚到执行事务之前 |
close() | 关闭连接 |
- 一个例子
import pymysql.cursorsconfig = {'host':'127.0.0.1','port':3306,'user':'root','password':'xinxin2333','database':'trade_ms','charset':'utf8mb4','cursorclass':pymysql.cursors.Cursor,}# 连接数据库
connection = pymysql.connect(**config)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
cursors 模块
类 : Cursor
- 使用
connections.Connection.cursor()
得到,而不是这个类的构造函数。 connections.Connection.cursor()
的参数是cursor
的类型。- 重要函数
函数 | 说明 |
---|---|
callproc(procname, args=()) | 执行一个过程 |
execute(query,args=None) | 执行一条SQL语句,返回受影响的行数。若args 是列表,用%s 做占位符,若是字典,用%(name)s |
executemany(query,args) | 对一个操作运行多个数据,如一次插入多条数据 |
fetchall() | 取出操作返回的所有的行 |
fetchone() | 取出一行 |
fetchmany(size=None) | 取出 size 行 |
close() | 关闭这个游标对象 |
- 游标类型
类名 | 说明 |
---|---|
Cursor | 默认类型,查询返回list |
DictCursor | 与Cursor不同的地方是,查询返回dict,包括属性名 |
SSCursor | 查询不会返回所有的行,而是按需求返回 |
SSDictCursor | 差别同前两个 |
- 举例说明
#Cursor 查询返回
(10000, 't恤男短袖', 28, Decimal('89.00'), 300)
#DictCursor 查询返回
{'cid': 10000, 'cname': 't恤男短袖', 'claid': 28, 'price': Decimal('89.00'), 'cnum': 300}
- 1
- 2
- 3
- 4
- 一个例子
#!python3
#-*- coding: utf-8 -*-import pymysql.cursors # 好像import这个模块就可以了config = {'host':'127.0.0.1','port':3306,'user':'root','password':'xinxin2333','database':'trade_ms','charset':'utf8mb4','cursorclass':pymysql.cursors.Cursor,}connection = pymysql.connect(**config) # 连接数据库try:with connection.cursor() as cursor:sql = 'SELECT * FROM commodity WHERE price > 100 ORDER BY price'count = cursor.execute(sql) # 影响的行数print(count)result = cursor.fetchall() # 取出所有行for i in result: # 打印结果print(i)connectionmit() # 提交事务
except:connection.rollback() # 若出错了,则回滚finally:connection.close()
更多推荐
PyMySQL 使用笔记,这个感觉写的挺全面,免得以后自己再找
发布评论