MySQL mysql-connector的具体实现

 更新时间:2025年11月27日 08:58:14   作者:愚戏师  
本文主要介绍了MySQL mysql-connector的具体实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、安装与 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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql学习笔记之帮助文档

    mysql学习笔记之帮助文档

    本文给大家详细讲述的是mysql的help(帮助)命令的用法,非常细致,有需要的小伙伴可以来参考下
    2017-02-02
  • 解决mysql连接超时和mysql连接错误的问题

    解决mysql连接超时和mysql连接错误的问题

    这篇文章主要介绍了解决mysql连接超时和mysql连接错误的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Mysql 建库建表技巧分享

    Mysql 建库建表技巧分享

    本文中说到的“建”,并非单纯的建一个库,或是建一张表,而是你建好的库和表在项目的运营中,是否能应付各种事件,下面我说说几个我在项目中遇到的问题以及处理的方法,算是一个小小的心得,给大家分享下。
    2011-07-07
  • Mysql中的concat函数(拼接函数)详解

    Mysql中的concat函数(拼接函数)详解

    很多时候,我们需要将不同地方获得的字符串拼接在一起,此时就需要使用CONCAT和CONCAT_WS函数,这篇文章主要介绍了Mysql中的concat函数(拼接函数),需要的朋友可以参考下
    2023-02-02
  • 最新mysql-5.7.21安装和配置方法

    最新mysql-5.7.21安装和配置方法

    这篇文章主要介绍了最新mysql-5.7.21安装和配置方法,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • mysql去重的两种方法详解及实例代码

    mysql去重的两种方法详解及实例代码

    这篇文章主要介绍了mysql去重的两种方法详解及实例代码的相关资料,这里对去重的两种方法进行了一一实例详解,需要的朋友可以参考下
    2017-01-01
  • 在MySQL中实现二分查找的详细教程

    在MySQL中实现二分查找的详细教程

    这篇文章主要介绍了在MySQL中实现二分查找的详细教程,来自计算机研究生考试原题,需要的朋友可以参考下
    2015-05-05
  • mysql查询使用_rowid虚拟列的示例

    mysql查询使用_rowid虚拟列的示例

    MySQL中,_rowid是InnoDB虚拟列,用于无主键表的行ID查询,若存在主键或唯一列,则指向其,否则使用隐藏ID(不稳定),推荐使用ROW_NUMBER()或变量模拟,且应显式定义主键以确保稳定性,对mysql,_rowid虚拟列相关知识感兴趣的朋友一起看看吧
    2025-06-06
  • MySQL主从复制之GTID模式详细介绍 

    MySQL主从复制之GTID模式详细介绍 

    这篇文章主要介绍了MySQL主从复制之GTID模式,GTID的复制方式,它由UUID和事务ID两个部分组成,具有GTID事务是全局唯一性的,并且一个事务对应一个GTID值、一个GTID值在同一个MySQL实例上只会执行一次等特点,想了解更多的小伙伴可以参考下面详细内容,希望对你有所帮助
    2022-02-02
  • MySQL8.0中的窗口函数的示例代码

    MySQL8.0中的窗口函数的示例代码

    本文主要介绍了MySQL8.0中的窗口函数的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03

最新评论