目录
- python pymysql
- 安装
- PyMySQL 连接数据库
- PyMySQL的连接对象API
- 数据库查询操作
- 数据库更新操作
- 游标对象方法
- execute(query, args=None)
- executemany(query, args)
- fetchall()
- fetchmany(size = None )
- fetchone()
- close()
- pymysql查询出来的结果带逗号和小括号
python pymysql
安装
pip install PyMySQL
PyMySQL 连接数据库
import pymysql
pymysql.Connect(
host='localhost',
port = 3306,
user ='root',
password = '****',
db ='db',
charset = 'utf8'
)
//host :数据库地址(本地:localhost或127.0.0.1)
//port:数据库端口(默认:3306)
//user:数据库登录用户
//password:数据库登录密码
//db:连接的数据库名称
//charset:编码格式(推荐utf8)
PyMySQL的连接对象API
pymysql.connections.Connection(host=None, user=None, password='', database=None, port=0, unix_socket=None, charset='', sql_mode=None, read_default_file=None, conv=None, use_unicode=None, client_flag=0, cursorclass=, init_command=None, connect_timeout=10, ssl=None, read_default_group=None, compress=None, named_pipe=None, autocommit=False, db=None, passwd=None, local_infile=False, max_allowed_packet=16777216, defer_connect=False, auth_plugin_map=None, read_timeout=None, write_timeout=None, bind_address=None, binary_prefix=False, program_name=None, server_public_key=None)
host :数据库服务器所在的主机
user :以以下身份登录的用户名
password :使用的密码。
database :要使用的数据库,无则不使用特定的数据库。
port :要使用的MySQL端口,默认情况下通常可以。(预设值:3306)
bind_address :当客户端具有多个网络接口时,请指定从中连接到主机的接口。参数可以是主机名或IP地址。
unix_socket :(可选)您可以使用unix套接字而不是TCP / IP。
read_timeout :从连接读取的超时(以秒为单位)(默认值:无-无超时)
write_timeout :写入连接的超时时间(以秒为单位)(默认值:无-无超时)
charset :您要使用的字符集。
sql_mode :要使用的默认SQL_MODE。
read_default_file :指定my.cnf文件以从[client]部分下读取这些参数。
conv :要使用的转换字典,而不是默认字典。这用于提供类型的自定义编组和解编组。请参阅转换器。
use_unicode :是否默认为unicode字符串。对于Py3k,此选项默认为true。
client_flag :发送到MySQL的自定义标志。查找常量中的潜在值。
cursorclass :要使用的自定义光标类。
init_command :建立连接时要运行的初始SQL语句。
connect_timeout :连接时引发异常之前的超时。(默认值:10,最小值:1,最大值:31536000)
ssl :类似于mysql_ssl_set()参数的参数字典。
read_default_group :要从配置文件中读取的组。
compress :不支持
named_pipe :不支持
autocommit : 自动提交模式。无表示使用服务器默认值。(默认值:False)
local_infile :布尔值,用于启用LOAD DATA LOCAL命令。(默认值:False)
max_allowed_packet :发送到服务器的最大数据包大小,以字节为单位。(默认值:16MB)仅用于限制小于默认值(16KB)的“ LOAD LOCAL INFILE”数据包的大小。
defer_connect :在构造时不要显式连接-等待连接调用。(默认值:False)
auth_plugin_map :处理该插件的类的插件名称字典。该类将Connection对象作为构造函数的参数。该类需要使用身份验证数据包作为参数的身份验证方法。对于对话框插件,可以使用提示(回显,提示)方法(如果没有身份验证方法)从用户返回字符串。(实验性)
server_public_key : SHA256身份验证插件公共密钥值。(默认值:无)
db :数据库的别名。(为了与MySQLdb兼容)
passwd :密码别名。(为了与MySQLdb兼容)
binary_prefix :在字节和字节数组上添加_binary前缀。(默认值:False)
数据库查询操作
Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。
- fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
- fetchall(): 接收全部的返回结果行.
- rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。
import pymysql
conn = pymysql.Connect( # 打开数据库连接
host='localhost',
port = 3306,
user = 'root',
password = '123456',
db = 'test',
charset='utf8'
)
cur = conn.cursor() # 使用cursor()方法获取操作游标
sql = "select * from student" # SQL 查询语句
try:
cur.execute(sql) # 执行SQL语句
results = cur.fetchall() # 获取所有记录列表
for db in results:
id = db[0]
name = db[1]
city = db[2]
age = db[3]
print('ID:%s 姓名:%s 年龄:%s 城市:%s'%(id,name,age,city))
except:
print('error')
数据库更新操作
import pymysql
conn = pymysql.Connect( # 打开数据库连接
host='localhost',
port = 3306,
user = 'root',
password = '123456',
db = 'test',
charset='utf8'
)
cur = conn.cursor() # 使用cursor()方法获取操作游标
sql = "" # SQL更新语句
try:
cur.execute(sql) # 执行SQL语句
db.commit() # 提交修改
except:
# 发生错误时回滚
db.rollback()
游标对象方法
execute(query, args=None)
- 介绍:执行查询
- 参数:
-
- query:str类型,要查询的SQL语句
- args : 元组,列表或字典,与查询一起使用的参数。(可选的)
- 返回值:受影响的行数。
*注意: 如果args是列表或元组,则%s可用作查询中的占位符。如果args是字典,则%(name)s可用作查询中的占位符。
executemany(query, args)
- 介绍: 针对一个查询运行多个数据
- 参数:
-
- query: 查询要在服务器上执行 。
- args : 序列或映射的序列。用作参数 。
- 返回值:受影响的行数(如果有)
- 注意: 此方法提高了多行INSERT和REPLACE的性能。否则,这等效于使用execute()遍历args
fetchall()
- 介绍:获取所有行
fetchmany(size = None )
- 介绍:获取多行
- size:要获取的行数
fetchone()
- 介绍:获取下一行
close()
- 介绍: 关闭游标只会耗尽所有剩余数据。
pymysql查询出来的结果带逗号和小括号
//我是fecthall接收全部,然后循环打印,结果有逗号和小括号
将:for row in temp: print(row)
改为:for (row,) in temp: print(row) 可以解决