一、安装与 mysql 8.0 适配
1. 驱动安装
安装命令:python -m pip install mysql-connector
验证安装(无报错即成功):
import mysql.connector
2. mysql 8.0 版本用户创建与远程连接
mysql 8.0 及以上版本(主流版本)需先创建用户,再单独授权(8.0 + 不再支持 grant 语句中直接设置密码):
- 步骤 1:创建用户(指定允许远程访问的 ip)
-- 示例:创建用户user_test,允许ip为xx.xx.xxx.xxx的主机远程访问 create user 'user_test'@'xx.xx.xxx.xxx' identified by '你的复杂密码';
若需允许任意 ip 远程访问(存在安全风险),将 ip 改为 %:
create user 'user_test'@'%' identified by '你的复杂密码';
- 步骤 2:授予远程访问权限
-- 示例:授予用户对所有数据库的所有操作权限(可根据需求缩小权限范围) grant all privileges on *.* to 'user_test'@'xx.xx.xxx.xxx' with grant option;
- 步骤 3:刷新权限使配置生效
flush privileges;
二、数据库基础操作
1. 创建数据库
import mysql.connector
mydb = mysql.connector.connect(host="localhost", user="root", passwd="123456")
mycursor = mydb.cursor()
mycursor.execute("create database runoob_db")2. 查看所有数据库
mycursor.execute("show databases")
for x in mycursor:
print(x)3. 直接连接指定数据库
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="123456",
database="runoob_db"
)三、数据表操作
1. 创建数据表(需先连指定数据库)
mycursor.execute("create table sites (name varchar(255), url varchar(255))")
2. 查看数据表
mycursor.execute("show tables")
for x in mycursor:
print(x)3. 主键设置
- 创建表时设置:mycursor.execute("create table sites (id int auto_increment primary key, name varchar(255), url varchar(255))")
- 表已创建后添加:mycursor.execute("alter table sites add column id int auto_increment primary key")
四、数据操作(增删改查)
1. 插入数据
单条插入(需 commit() 提交):
sql = "insert into sites (name, url) values (%s, %s)"
val = ("runoob", "https://www.runoob.com")
mycursor.execute(sql, val)
mydb.commit()批量插入(executemany()):
val = [('google','https://www.google.com'), ('github','https://www.github.com')]
mycursor.executemany(sql, val)
mydb.commit()获取插入记录 id:print(mycursor.lastrowid)
2. 查询数据
查询所有 / 指定字段:
mycursor.execute("select * from sites") # 所有字段
mycursor.execute("select name, url from sites") # 指定字段
myresult = mycursor.fetchall() # 所有结果
for x in myresult: print(x)单条结果:myresult = mycursor.fetchone()
条件查询(防 sql 注入用 % s 占位符):
sql = "select * from sites where name = %s"
mycursor.execute(sql, ("runoob",))- 排序:
order by 字段 [asc/desc](默认升序) - 限制条数:
limit 数量 [offset 起始位置](起始位从 0 开始)
3. 删除数据(务必加 where 条件)
sql = "delete from sites where name = %s"
mycursor.execute(sql, ("stackoverflow",))
mydb.commit()4. 更新数据(务必加 where 条件)
sql = "update sites set name = %s where name = %s"
mycursor.execute(sql, ("zhihu", "zh"))
mydb.commit()五、删除数据表
mycursor.execute("drop table if exists sites")
# if exists 避免表不存在报错 六、核心注意事项
- 增 / 删 / 改数据后,必须执行
mydb.commit()才能生效; - mysql 8.0 需适配认证插件,否则无法正常连接;
- 条件操作(查 / 删 / 改)用 % s 占位符,防止 sql 注入;
- 删除 / 更新操作必须加 where 条件,避免误操作全表数据。
到此这篇关于mysql mysql-connector的具体实现的文章就介绍到这了,更多相关mysql mysql-connector内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论