python-MySQL驱动之mysql-connector

mysql-connector

mysql-connector 是 MySQL 官方提供的驱动器。

安装驱动

Ubuntu22

sudo apt install python3-mysql.connector

多操作系统

python -m pip install mysql-connector-python3

验证安装

python中,导入模块,不提示错误即为安装成功

import mysql.connector

数据库操作

创建连接后,sql操作命令与在mysql中操作一致,因为下文中常用的

mycursor = mydb.cursor()

为创建一个游标对象mycursor,用于数据库的连接,并且可以执行SQL的命令(查询、插入、更新、删除等)

创建数据库连接

用于连接数据库

import mysql.connector
mydb = mysql.connector.connect(
    host="localhost",       # 数据库主机地址
    user="yourusername",    # 数据库用户名
    passwd="yourpassword"   # 数据库密码
)

创建数据库

import mysql.connector
mydb = mysql.connector.connect(
    host="localhost",       # 数据库主机地址
    user="yourusername",    # 数据库用户名
    passwd="yourpassword"   # 数据库密码
)
mycursor = mydb.cursor()
mycursor.execute("CREATE DATABASE cavia_db")    # 创建一个名为cavia_db的数据库

打开数据库

import mysql.connector
mydb = mysql.connector.connect(
    host="localhost",       # 数据库主机地址
    user="yourusername",    # 数据库用户名
    passwd="yourpassword",   # 数据库密码
    database="cavia_db"        # 要打开的数据库名
)

查看数据库里的数据表

import mysql.connector
mydb = mysql.connector.connect(
    host="localhost",       # 数据库主机地址
    user="yourusername",    # 数据库用户名
    passwd="yourpassword",   # 数据库密码
    database="cavia_db"        # 要打开的数据库名
)
mycursor = mydb.cursor()
mycursor.execute("SHOW TABLES")
for x in mycursor:
    print(x)

创建/删除数据表

import mysql.connector
mydb = mysql.connector.connect(
    host="localhost",       # 数据库主机地址
    user="yourusername",    # 数据库用户名
    passwd="yourpassword",   # 数据库密码
    database="cavia_db"        # 要打开的数据库名
)
mycursor = mydb.cursor()
mycursor.execute(
"CREATE TABLE cavia_test 
(id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
age VARCHAR(255))")
#创建名为caiva_test的数据表,添加主键,定义两列name和age
import mysql.connector
mydb = mysql.connector.connect(
    host="localhost",       # 数据库主机地址
    user="yourusername",    # 数据库用户名
    passwd="yourpassword",   # 数据库密码
    database="cavia_db"        # 要打开的数据库名
)
mycursor = mydb.cursor()
sql = "DROP TABLE IF EXISTS cavia_test"
#IF EXISTS 关键字是用于判断表是否存在,只有在存在的情况才删除
mycursor.execute(sql)

数据表中插入(批量)数据

import mysql.connector
mydb = mysql.connector.connect(
    host="localhost",       # 数据库主机地址
    user="yourusername",    # 数据库用户名
    passwd="yourpassword"   # 数据库密码
    database="cavia_db"        # 要打开的数据库名
)
mycursor = mydb.cursor()
sql = "INSERT INTO cavia_test (name, age) VALUES (%s, %s)"
val = [
("Cavia", "30"),
("Kaer", "35"),
("MMM", "25"),
("Mulan","18")
mycursor.execute(sql, val)
mydb.commit()    # 数据表内容有更新,必须使用到该语句
print(mycursor.rowcount, "条记录插入成功。")    #输出变动数量(4),记录插入成功

回滚操作

在一个事务中执行多个 SQL 操作时,如果其中某个操作出现错误或失败,需要进行回滚操作。回滚操作可以撤销已经执行的 SQL 操作,使数据库回到事务开始之前的状态。
通过回滚操作,可以确保所有的 SQL 操作要么全部成功提交,要么全部被撤销,从而维护了数据的一致性和可靠性。

例如可以将插入数据的操作中的

mycursor.execute(sql, val)
mydb.commit()    # 数据表内容有更新,必须使用到该语句
print(mycursor.rowcount, "条记录插入成功。")    #输出变动数量(4),记录插入成功

替换为

try:
   # 执行sql语句
   mycursor.execute(sql)
   # 执行sql语句
   mydb.commit()
   print(mycursor.rowcount, "条记录插入成功。")    #输出变动数量(4),记录插入成功
except:
   # 发生错误时回滚
   mydb.rollback()

查询所有数据

import mysql.connector
mydb = mysql.connector.connect(
    host="localhost",       # 数据库主机地址
    user="yourusername",    # 数据库用户名
    passwd="yourpassword"   # 数据库密码
    database="cavia_db"        # 要打开的数据库名
)
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM cavia_test")
myresult = mycursor.fetchall()     # fetchall() 获取所有记录
for x in myresult:
  print(x)

其余查询方法,如查询具体字段、where条件、通配符等。参见MySQL语句

数据排序

import mysql.connector
mydb = mysql.connector.connect(
    host="localhost",       # 数据库主机地址
    user="yourusername",    # 数据库用户名
    passwd="yourpassword"   # 数据库密码
    database="cavia_db"        # 要打开的数据库名
)
mycursor = mydb.cursor()
sql = "SELECT * FROM cavia_test ORDER BY name"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
  print(x)

默认的排序方式为升序,关键字为 ASC,如果要设置降序排序,可以设置关键字 DESC

sql = “SELECT * FROM cavia_test ORDER BY name DESC”

Limit

import mysql.connector
mydb = mysql.connector.connect(
    host="localhost",       # 数据库主机地址
    user="yourusername",    # 数据库用户名
    passwd="yourpassword"   # 数据库密码
    database="cavia_db"        # 要打开的数据库名
)
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM cavia_test LIMIT 3 OFFSET 1")
#从第二条查询,查询3条
myresult = mycursor.fetchall()
for x in myresult:
  print(x)

查询/删除/更新指定数据

为了防止数据库查询发生 SQL 注入的攻击,我们可以使用 %s 占位符来转义查询/删除/更新的条件

import mysql.connector
mydb = mysql.connector.connect(
    host="localhost",       # 数据库主机地址
    user="yourusername",    # 数据库用户名
    passwd="yourpassword"   # 数据库密码
    database="cavia_db"        # 要打开的数据库名
)
mycursor = mydb.cursor()
sql = "SELECT * FROM cavia_test WHERE name = %s"
na = ("Cavia", )
mycursor.execute(sql,na)
myresult = mycursor.fetchall()
for x in myresult:
  print(x)
import mysql.connector
mydb = mysql.connector.connect(
    host="localhost",       # 数据库主机地址
    user="yourusername",    # 数据库用户名
    passwd="yourpassword"   # 数据库密码
    database="cavia_db"        # 要打开的数据库名
)
mycursor = mydb.cursor()
sql = "DELETE FROM cavia_test WHERE name = %s"
na = ("Cavia", )
mycursor.execute(sql,na)
mydb.commit()    # 数据表内容有更新,必须使用到该语句
print(mycursor.rowcount, "条记录删除成功。")
import mysql.connector
mydb = mysql.connector.connect(
    host="localhost",       # 数据库主机地址
    user="yourusername",    # 数据库用户名
    passwd="yourpassword"   # 数据库密码
    database="cavia_db"        # 要打开的数据库名
)
mycursor = mydb.cursor()
sql = "UPDATE cavia_test SET age = %s  WHERE name = %s"
val = ("18", "Cavia")
mycursor.execute(sql,val)
mydb.commit()    # 数据表内容有更新,必须使用到该语句
print(mycursor.rowcount, "条记录修改成功。")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值