当前位置: 代码网 > it编程>数据库>Mysql > MySQL mysql-connector的具体实现

MySQL mysql-connector的具体实现

2025年11月27日 Mysql 我要评论
一、安装与 mysql 8.0 适配1. 驱动安装安装命令:python -m pip install mysql-connector验证安装(无报错即成功):import mysql.connect

一、安装与 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 避免表不存在报错 

六、核心注意事项

  1. 增 / 删 / 改数据后,必须执行 mydb.commit() 才能生效;
  2. mysql 8.0 需适配认证插件,否则无法正常连接;
  3. 条件操作(查 / 删 / 改)用 % s 占位符,防止 sql 注入;
  4. 删除 / 更新操作必须加 where 条件,避免误操作全表数据。

到此这篇关于mysql mysql-connector的具体实现的文章就介绍到这了,更多相关mysql mysql-connector内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com