当前位置:首页 > 问答 > 正文

Python里头到底怎么搞定MySQL数据库那些事儿?

Python里头怎么搞定MySQL数据库那些事儿?这事儿说白了,就是让Python这个万能胶水去连接、操作MySQL这个放数据的仓库,你别看听起来好像很复杂,其实跟着步骤来,一步步拆开看,简单得很。

第一步:准备好工具——安装库

Python自己本身不能直接跟MySQL对话,需要一个翻译官,这个翻译官就是一个叫 mysql-connector-python 的库,这是MySQL官方出的,用起来最放心,安装它特别简单,打开你的命令行(Windows叫CMD或者PowerShell,Mac叫终端),输入下面这行命令,敲个回车就行:

pip install mysql-connector-python

如果网络不好,也可以用国内的镜像源,比如清华的,这样下载飞快:pip install mysql-connector-python -i https://pypi.tuna.tsinghua.edu.cn/simple

等它安装完成,你的Python就有了和MySQL沟通的能力。

第二步:建立连接——找到仓库大门

工具有了,你得先找到MySQL数据库的“大门”在哪里,并且拿到“钥匙”,这就需要连接数据库,你需要知道四样东西:主机地址(通常是localhost)、用户名、密码、以及具体要操作哪个数据库(数据库名)。

下面这段代码就是干这个事儿的:

import mysql.connector
# 尝试打开大门
mydb = mysql.connector.connect(
    host="localhost",      # 数据库在哪,本地就是localhost
    user="你的用户名",      # root
    password="你的密码",    # 安装MySQL时你设的密码
    database="你的数据库名" # 你要用的那个库,test_db
)
# 如果没报错,打印出这个连接对象,说明大门打开了!
print(mydb)

注意看,mysql.connector.connect 这个函数就是用来连接的,你把那四个信息像填表格一样填进去就行了,运行这段代码,如果打印出一串像 <mysql.connector.connection_cext.CMySQLConnection object at 0x...> 这样的信息,恭喜你,连接成功了!如果报错,那就检查一下你的密码、数据库名是不是写对了,或者你的MySQL服务有没有启动。

第三步:搞个游标——派个机器人进去拿东西

连接成功了,就好比你人已经站在仓库大门口了,但你不能直接用手在仓库里乱翻吧?你需要一个帮你拿东西、放东西的机器人,这个机器人就是“游标”(Cursor)。

# 创建游标,这个 mycursor 就是我们的机器人
mycursor = mydb.cursor()

你所有的操作,基本上都是通过给这个 mycursor 下命令来完成的。

第四步:执行操作——让机器人干活

仓库里最常见的活儿就是四样:增(插入新数据)、删(删除数据)、改(更新数据)、查(查找数据)。

  1. 查(SELECT)—— 看看有什么 这是最常用的操作,比如你想看看一个叫 users 的表格里都有哪些人:

    mycursor.execute("SELECT * FROM users")  # 让机器人执行查询语句
    myresult = mycursor.fetchall()  # 让机器人把查到的所有结果都搬出来
    for row in myresult:  # 一行一行地看
        print(row)

    这里的 execute 方法是让游标执行SQL语句,fetchall() 是把所有结果都取出来,如果你只想要一条结果,可以用 fetchone()

  2. 增(INSERT)—— 往里放新东西 假设我们要往 users 表里添加一个新用户,叫“小王”,年龄28。

    sql = "INSERT INTO users (name, age) VALUES (%s, %s)"  # 写个单子,说明要放什么
    val = ("小王", 28)  # 具体要放的值
    mycursor.execute(sql, val)  # 机器人去放东西
    mydb.commit()  # 【特别重要】确认一下,这样东西才真的放进去了
    print(mycursor.rowcount, "条记录插入成功。")

    这里用了 %s 作为占位符,而不是直接把值写在SQL语句里,是为了防止“SQL注入”这种安全问题,这是个好习惯,最后那个 mydb.commit() 千万不能省,不然操作不会真正保存到数据库里。

  3. 改(UPDATE)和删(DELETE) 这两个操作和增加非常像,也是写SQL语句,然后执行、提交。

    # 更新:把小王的名字改成“老王”
    sql = "UPDATE users SET name = '老王' WHERE name = '小王'"
    mycursor.execute(sql)
    mydb.commit()
    # 删除:把名字是老王的人删掉
    sql = "DELETE FROM users WHERE name = '老王'"
    mycursor.execute(sql)
    mydb.commit()

第五步:收尾工作——关门走人

活儿干完了,要记得把机器人和大门都关上,这是个好习惯,能释放资源。

mycursor.close()  # 先关掉机器人
mydb.close()      # 再关上仓库大门
print("数据库连接已关闭")

整个流程就像一次仓库之旅:

  1. pip install 装好工具(翻译官)。
  2. mydb = mysql.connector.connect(...) 找到大门并用钥匙开门
  3. mycursor = mydb.cursor() 派个机器人进去
  4. mycursor.execute(SQL语句) 让机器人干活(增删改查)。
    • 如果是“增删改”,记得 mydb.commit() 确认
    • 如果是“查”,用 fetchall()fetchone() 拿结果
  5. mycursor.close()mydb.close() 关门走人

你按照这个顺序和思路来,Python操作MySQL数据库的那些事儿,基本就搞定八九成了,剩下的就是多练习,熟悉更多的SQL语句写法而已。

Python里头到底怎么搞定MySQL数据库那些事儿?