python3 连接数据库 mysql PyMysql

29 篇文章 1 订阅
4 篇文章 0 订阅

python3PyMysql

PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库 , 遵循 Python 数据库 API v2.0 规范 。

PyMySQL 安装

pip install PyMySQL

PyMySQL 连接数据库

import pymysql
pymysql.Connect(
            host='localhost',
            port = 3306,
            user ='root',
            password = '****',
            db ='db',
            charset = 'utf8'
        )
  • host :数据库地址(本地:localhost127.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=<class 'pymysql.cursors.Cursor'>, 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()方法后影响的行数。
举例

查询本地数据库test的student表的数据(用户:root 密码:123456,编码:utf-8)

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')

结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5FqSoedP-1677376028871)(images\20200105104010.png)]

数据库更新操作

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()

  • 介绍: 关闭游标只会耗尽所有剩余数据。
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卑微小钟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值