python操作MySQL

mysql数据库可以应用于多种编程语言,包括 PHP,Java,Go,Python

不同编程语言操作mysql,都是使用了mysql提供的API接口

如果直接操作mysql提供的API相对复杂一些,因此不同的编程语言都有不同的封装好的包或者模块进行数据库的相关操作。

在python中也有很多的包或模块进行mysql数据库的操作,比较知名的包包括pymysql,mysqldb

1.安装pymysql

打开cmd,输入命令:pip install pymysql

2.python操作mysql的基本步骤

  1. 连接mysql数据库

    connection = pymysql.connect(host = 'localhost',
                                 user = 'root',
                                 password = '',
                                 db = 'test',
                                 charset = 'utf8',
                                 cursorclass = pymysql.cursors.DictCursor)
    

    【连接mysql数据库时的 cursorclass=pymysql.cursors.DictCursor
    可以把结果转为 字典类型,默认为元组】

    【注意!可以这样写,但是 ‘charset=’ 和 ‘cursorclass=’ 一定不能省略】

    connection = pymysql.connect('localhost','root','','test',
                        charset = 'utf8mb4',
                        cursorclass = pymysql.cursors.DictCursor)
    
  2. 创建游标对象

    cursors = a.cursor()
    
  3. 准备sql

    sql = 'select version();'
    

    【注意!字符串里的sql有没有分号都行,因为mysql会进行语法解析和查询优化!在第五节的笔记里有】

  4. 用游标对象执行sql

    cursors.execute(sql)
    
    #在执行sql时,注意进行提交,不过也可以不写
    connection.commit()
    

    【commit()提交更改,以稳定存储】

    【注意!db.commit()和下面的db.rollback()是在进行数据的增删改操作的时候才用到的,其他时候无所谓】

    【注意!执行sql,返回的结果是执行的行数】

    #例
    sql = 'select version();'
    row = cursors.execute(sql)
    print(row)
    >>>1
    #此时只执行了1行
    
  5. 用游标对象提取结果

    data = cursors.fetchall()
    

    【fetchall() 提取所有的结果。fetchone() 提取一条结果】

    【注意!如果执行的是非查询类sql,则没有返回的结果(也就是返回为None),提取不到数据】

  6. 关闭数据库连接

    connection.close()
    

3.pymysql的示例代码

【关于数据库的操作,用的都是连接数据库的变量对象,例如下面的a】

【关于sql语句的操作,用的都是游标对象,例如下面的b】

import pymysql

#1.连接数据库
a = pymysql.connect(host = 'localhost',
                    user = 'root',
                    password = '',
                    db = 'test',
                    charset = 'utf8',
                    cursorclass = pymysql.cursors.DictCursor)

#2.创建游标对象
b = a.cursor()

#3.准备sql
sql = 'select version()'

#4.执行sql
b.execute(sql)

#5.提取结果
data = b.fetchall()

#6.关闭连接
a.close()

print(data)

>>>[{'version()': '5.7.28'}]

#如果用fetchone()提供结果
data = b.fetchone()
print(data)
>>>{'version()': '5.7.28'}

4. 代码优化

【就是把第2到5步封到 try: 里】

import pymysql

#1. 连接数据库
db = pymysql.connect('localhost','root','','test',
                    charset = 'utf8mb4',
                    cursorclass = pymysql.cursors.DictCursor)

try:
    #2. 创建游标
    cursor = db.cursor()

    #3. 准备sql
    sql = 'select * from stu where name = "cc"'

    #4. 执行sql
    cursor.execute(sql)
    #注意!如果此时print(cursor.execute(sql)),打印结果为执行的行数
    db.commit()  # 在执行sql语句时,注意进行提交
    
    #5. 提取结果
    data = cursor.fetchall()
    print(data)
    # 注意!如果执行的是非查询类sql,则无返回结果,也就是print(data)输出为None
except:
    # 当代码出现错误时,进行回滚
    # 这样之前的执行就不会生效
    # 可写可不写
    db.rollback()

#6. 不管怎么样,最后都要关闭连接
finally:
    db.close()
Python可以使用多种库来操作MySQL数据库,其中包括PyMySQLmysqlclient。PyMySQL是一个纯Python编写的库,安装非常简单,而mysqlclient是底层使用C编写的库,安装可能会有一些问题。\[3\]你可以根据自己的需求选择其中之一进行安装和使用。 在使用PyMySQL库时,你可以使用%s作为参数占位符来执行SQL操作,这与Python自带的sqlite3模块的占位符问号(?)有所不同。如果需要更详细的文档,你可以参考PyMySQL的官方文档。\[2\] 如果你想了解更多关于Python操作MySQL的知识,可以参考一些专门的章节或教程,这些资源会更详细地介绍如何使用Python来进行MySQL数据库操作。\[1\]希望这些信息对你有所帮助! #### 引用[.reference_title] - *1* [Python操作MySQL](https://blog.csdn.net/sanylove/article/details/124166373)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [太全了——用Python操作MySQL的使用教程集锦](https://blog.csdn.net/m0_59485658/article/details/126364328)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Python操作MySql](https://blog.csdn.net/PAN_BING/article/details/120812542)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值