目录
引言
本篇文章介绍了如何使用Python对MySql数据库进行基础操作,具体包括创建数据库、创建表、表的增删查改等。
本文使用的MySql数据库可视化工具是DBeaver(你也可以使用其他的可视化工具,或者不使用),具体配置可参考我的另一篇文章(还没写完,可以先看看其他大佬写的)
本文适用于熟悉基础的SQL语句和会使用MySql数据库的读者,对于这些知识,这篇文章不进行介绍。
本文介绍的连接MySql使用的第三方Python库是pymysql,当然你也可以选择其他的第三方库。
1. 安装pymysql库
首先在终端执行下面的pip命令下载pymysql库:
pip install pymysql
当看到Successfully installed时表示安装成功。
2. 连接MySql数据库
连接MySql使用的是pymysql中的Connection对象,他有下面几个常用的参数:
conn = Connection(
host = 'localhost', # 主机名(或IP地址)
port = 3306, # 端口号,默认的mysql都是3306
user = 'root', # 用户名
password = 'XXXXX', # 对应用户的密码
database = 'XXXX', # 连接的数据库名称
autocommit = True, # 是否自动提交
charset = 'utf8' # 编码码格式
)
接下来会一一讨论这些参数的作用。
运行下面的代码(具体参数需要根据自己的mysql进行更改):
from pymysql import Connection
conn = Connection(
host = 'localhost', # 主机名(或IP地址)
port = 3306, # 端口号,默认的mysql都是3306
user = 'root', # 用户名
password = '123456', # 对应用户的密码
)
# 获取mysql版本信息 (测试连接是否成功)
print(conn.get_server_info())
conn.close() # 关闭连接
运行完成后终端显示8.0.38(MySql版本号,与你下载的MySql版本有关),表示成功连接上MySql:
(ps: 如果连接失败,无法进行下面的操作,可以参考我的另一篇文章,下载和配置MySql数据库)
3. 无数据更改的操作
3.1 创建数据库
代码如下:
from pymysql import Connection
conn = Connection(
host = 'localhost', # 主机名(或IP地址)
port = 3306, # 端口号,默认的mysql都是3306
user = 'root', # 用户名
password = '123456', # 对应用户的密码
)
cursor = conn.cursor() # 获取游标对象
cursor.execute("create database test_database") # 创建数据库
cursor.close() # 关闭游标
conn.close() # 关闭连接
结果如下,成功创建了一个名为"test_database"的数据库:
3.2 创建表
在创建表之前要选择要操作的数据库,使用select_db()函数,参数为数据库的名称,如下:
from pymysql import Connection
conn = Connection(
host = 'localhost', # 主机名(或IP地址)
port = 3306, # 端口号,默认的mysql都是3306
user = 'root', # 用户名
password = '123456', # 对应用户的密码
)
cursor = conn.cursor() # 获取游标对象
conn.select_db("test_database") # 选择数据库
cursor.execute("create table test (id INT, name VARCHAR(10))") # 创建表
cursor.close() # 关闭游标
conn.close() # 关闭连接
使用游标进行数据库操作的主要原因包括:
- 管理数据库连接和执行SQL语句。
- 方便地迭代和处理结果集。
- 支持执行多种类型的SQL语句。
- 提供参数化查询,防止SQL注入攻击。
- 更好地管理事务,确保操作的原子性和一致性。
(看不懂没关系,用就完了)
执行完成后,可以看到数据库test_database中新建了一个test表:
3.3 查询表
我在另一个名为world的数据库中准备了一个表student,内容如下:
在python中执行以下代码进行查询:
from pymysql import Connection
conn = Connection(
host = 'localhost', # 主机名(或IP地址)
port = 3306, # 端口号,默认的mysql都是3306
user = 'root', # 用户名
password = '123456', # 对应用户的密码
)
# 查询
cursor = conn.cursor() # 获取游标对象
conn.select_db("world") # 选择数据库
cursor.execute("select * from student") # 查询语句
result = cursor.fetchall() # 获取查询结果
print(result)
cursor.close() # 关闭游标
conn.close() #关闭连接
在终端得到以下内容:
由此看来,对于查询的数据是以元组的类型返回的。
4. 有数据更改的操作(增删改)
pymysql在执行数据插入或其它产生数据更改的SQL语句时,默认是需要提交更改的,即需要通过代码“确认”这种更改行为。具体通过commit()函数进行操作。
与无数据更改的操作不同的除了SQL语句外就是使用了commit()函数,用来提交插入实务(可以理解为提交结果给数据库),具体操作如下。
对表有数据更改的基本操作包括:增、删、改,这三个操作原理都相同,只需将execute()函数中的语句更改为相应的SQL语句即可,这里以insert语句为例:
(ps:不使用commit()语句是无法完成对表操作的,但程序会正常执行,只是表中的数据不会变,可以自行尝试)
from pymysql import Connection
conn = Connection(
host = 'localhost', # 主机名(或IP地址)
port = 3306, # 端口号,默认的mysql都是3306
user = 'root', # 用户名
password = '123456', # 对应用户的密码
)
# 插入
cursor = conn.cursor() # 获取游标对象
conn.select_db("test_database") # 选择数据库
# 插入语句
cursor.execute("insert into test values (1, '张三'), (2, '李四'), (3, '王五')")
conn.commit() # 提交事务
cursor.close() # 关闭游标
conn.close() # 关闭连接
结果: