想用 Python 连接 MySQL 数据库?没问题,这篇教程就带你搞定。与其说是教程,不如说是我的经验分享,毕竟我也是踩过不少坑才摸索出来的。
首先,你要确保已经安装了 MySQL 服务器和 Python 环境。这是前提,没有的话,啥也别说了,先去安装。
安装好了之后,咱们需要一个 Python 库来帮我们和 MySQL 打交道。 常用的就是 mysql-connector-python
或者 pymysql
。 我个人比较喜欢用 mysql-connector-python
,感觉更官方一点。
安装命令很简单:
bash
pip install mysql-connector-python
或者你喜欢用 pymysql
的话:
bash
pip install pymysql
任选一个就行,接下来我就以 mysql-connector-python
为例来讲解。
安装完毕,咱们就可以开始写代码了。 别怕,其实挺简单的。
“`python
import mysql.connector
数据库连接配置
mydb = mysql.connector.connect(
host=”localhost”, # 数据库服务器地址,通常是 localhost
user=”yourusername”, # 你的 MySQL 用户名
password=”yourpassword”, # 你的 MySQL 密码
database=”yourdatabase” # 你要连接的数据库名
)
创建游标对象
mycursor = mydb.cursor()
执行 SQL 查询
mycursor.execute(“SELECT * FROM yourtable”) # yourtable 替换成你自己的表名
获取查询结果
myresult = mycursor.fetchall()
遍历结果并打印
for x in myresult:
print(x)
关闭游标和数据库连接
mycursor.close()
mydb.close()
“`
这段代码的核心就是 mysql.connector.connect()
函数,它负责建立 Python 和 MySQL 之间的连接。 你需要把里面的 host
, user
, password
, database
替换成你自己的实际信息。
创建游标 mycursor = mydb.cursor()
是为了让我们能够执行 SQL 语句。 游标就像一个指针,可以指向数据库中的不同位置。
mycursor.execute("SELECT * FROM yourtable")
这句代码就执行了一个 SQL 查询, yourtable
换成你的表名啊。 如果你想执行其他的 SQL 语句,比如 INSERT
, UPDATE
, DELETE
, 也是用 mycursor.execute()
函数, 只是 SQL 语句不一样而已。
myresult = mycursor.fetchall()
获取查询结果,它会把查询到的所有数据都放到一个列表里。 接下来就可以遍历这个列表,把数据打印出来或者做其他的处理。
最后,一定要记得关闭游标和数据库连接 mycursor.close()
和 mydb.close()
,释放资源。
这只是一个最简单的例子,实际应用中可能会更复杂。 比如,你可能需要处理 SQL 注入的风险,使用参数化查询:
python
sql = "SELECT * FROM yourtable WHERE column1 = %s AND column2 = %s"
val = ("value1", "value2")
mycursor.execute(sql, val)
使用 %s
作为占位符,然后把参数放到一个元组里传给 execute()
函数,这样可以有效地防止 SQL 注入。
还有,如果你的 MySQL 服务器不在本地,你需要修改 host
参数,填上服务器的 IP 地址或者域名。 如果你的 MySQL 服务器使用了非标准的端口,你还需要在 connect()
函数中指定 port
参数。
另外,如果你使用 pymysql
,代码会稍微有点不一样:
“`python
import pymysql
数据库连接配置
mydb = pymysql.connect(
host=”localhost”,
user=”yourusername”,
password=”yourpassword”,
database=”yourdatabase”
)
创建游标对象
mycursor = mydb.cursor()
执行 SQL 查询
mycursor.execute(“SELECT * FROM yourtable”)
获取查询结果
myresult = mycursor.fetchall()
遍历结果并打印
for x in myresult:
print(x)
关闭游标和数据库连接
mycursor.close()
mydb.close()
“`
其实差别不大,主要是导入的库不一样。
还有一点需要注意的是, MySQL 的编码问题。 默认情况下, MySQL 使用的是 latin1
编码, 这可能会导致中文乱码。 为了解决这个问题,你可以在 connect()
函数中指定 charset
参数:
python
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="yourdatabase",
charset="utf8"
)
或者,你也可以在创建数据库的时候就指定编码:
sql
CREATE DATABASE yourdatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
utf8mb4
编码支持更多的字符,包括一些 Emoji 表情。
总而言之, Python 连接 MySQL 数据库 并不难,关键是要理解连接配置、游标操作和 SQL 语句的执行。 多练习,多查资料, 遇到问题不要怕, 慢慢解决, 你一定可以掌握的。
评论(0)