使用python操作MySQL

之前一直是在DBMS中进行SQL的操作,本文给出一种通过官网提供的驱动器来给python提供连接数据库的方法。

  1. 首先要下载mysql-connector 这个库,我用的是pycharm,也一直在用anaconda这个库管理工具。所以在anaconda的base环境先中安装这个库:
pip install mysql-connector
  1. 然后我们用python执行如下代码,就可以检验连接是否成功,这里采用的是游标执行操作,注意密码和数据库是自己来定义的。
# -*- coding: UTF-8 -*-
import mysql.connector
# 打开数据库连接
db = mysql.connector.connect(
       host="localhost",
       user="root",
       passwd="XXX", # 写上你的数据库密码
       database='XXX', # 写上你要使用的数据库名称
       auth_plugin='mysql_native_password'
)
# 获取操作游标 
cursor = db.cursor()
# 执行 SQL 语句
cursor.execute("SELECT VERSION()")
# 获取一条数据
data = cursor.fetchone()
print("MySQL 版本: %s " % data)
# 关闭游标 & 数据库连接
cursor.close()
db.close()

运行结果:

MySQL 版本: 5.7.27-log

上面这段代码中有两个重要的对象你需要了解下,分别是 Connection 和 Cursor。
Connection 就是对数据库的当前连接进行管理,我们可以通过它来进行以下操作:
通过指定 host、user、passwd 和 port 等参数来创建数据库连接,这些参数分别对应着数据库 IP 地址、用户名、密码和端口号;
使用 db.close() 关闭数据库连接;
使用 db.cursor() 创建游标,操作数据库中的数据;
使用 db.begin() 开启事务;
使用 db.commit() 和 db.rollback(),对事务进行提交以及回滚。

当我们通过cursor = db.cursor()创建游标后,就可以通过面向过程的编程方式对数据库中的数据进行操作:
使用cursor.execute(query_sql),执行数据库查询;
使用cursor.fetchone(),读取数据集中的一条数据;
使用cursor.fetchall(),取出数据集中的所有行,返回一个元组 tuples 类型;
使用cursor.fetchmany(n),取出数据集中的多条数据,同样返回一个元组 tuples;
使用cursor.rowcount,返回查询结果集中的行数。如果没有查询到数据或者还没有查询,则结果为 -1,否则会返回查询得到的数据行数;
使用cursor.close(),关闭游标。

  1. 接下来,利用我电脑上已经存在的王者荣耀英雄数据表来执行简单的查询操作。
import traceback
try:
       sql = "SELECT id, name, hp_max FROM heros WHERE hp_max>6000"
       cursor.execute(sql)
       data = cursor.fetchall()
       print(cursor.rowcount, " 记录查询成功。")
       for each_hero in data:
              print(each_hero)
except Exception as e:
       # 打印异常信息
       traceback.print_exc()
       # 回滚
       db.rollback()
finally:
       # 关闭游标 & 数据库连接
       cursor.close()
       db.close()
       print("数据库已关闭")

至此,简单地用python连接数据库的操作已经完成。慢慢熟悉就可以了!

你可能感兴趣的:(MySQL)