赞
踩
在我之前的博客中,我详细地介绍了如何在Windows 11中安装MySQL,
最全安装Mysql教程,手把手教你如何在win11中安装MySQL-CSDN博客https://blog.csdn.net/btaworld/article/details/138537884
并发布了两篇关于SQL基础入门的文章。
SQL基础语法入门:插入数据,更新数据-CSDN博客https://blog.csdn.net/btaworld/article/details/138607880SQL基础语法入门:创建表,查询表-CSDN博客https://blog.csdn.net/btaworld/article/details/138582567
现在,让我们将这些知识融合在一起,看看它们能激发出什么样的创新火花。
在本篇博客中,我们将深入探讨如何使用Python来操作MySQL数据库。我们将通过实例代码,详细介绍如何建立连接,执行查询,以及处理返回的数据。无论你是初学者还是有经验的开发者,都能在这里找到有用的信息。让我们开始吧!
在Python中操作MySQL,可以使用pymysql或mysql-connector-python这两个库。
pymysql的优点是它纯Python编写,不需要任何额外的C库,这使得它在跨平台和分发上更加方便。它的API也相对简单直接。
mysql-connector-python是MySQL官方的Python驱动,它提供了更多的MySQL特性支持,包括事务、存储过程、预编译查询等。
如果你只是需要执行一些基本的SQL查询,那么pymysql可能会更简单一些。如果你需要更高级的特性,或者更喜欢使用官方支持的库,那么mysql-connector-python可能会更适合你。
本篇教程使用pymysql库进行讲解,首先你需要搭建好python环境,确保你的python版本符合pymysql的要求,要求Python >=3.7(2024年5月9日),具体可访问:pymysql · PyPI
然后在终端运行下面的命令进行安装pymysql库
- # 安装pymsql库
- pip install pymysql
- # 使用清华镜像源进行安装
- pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple
创建数据库有2种方法,如果你是根据我之前的教程,使用docker安装mysql并安装了phpMyAdmin,可以使用phpMyAdmin进行数据库创建
首先打开phpMyAdmin部署的端口,比如我的是8080端口,然后打开http://localhost:8080/,登入
点击这个
输入数据库名,其他保持默认,点击创建就行了
使用pymysql创建数据库非常简单,只需要执行一个CREATE DATABASE的SQL命令即可。
例如:创建text1数据库
- import pymysql
-
- # 创建连接
- conn = pymysql.connect(host="localhost", user="root", password="password")
-
- # 创建游标
- cursor = conn.cursor()
-
- # 执行SQL
- cursor.execute("CREATE DATABASE text1") # 创建数据库text1
-
- # 提交,不然无法保存新建或者修改的数据
- conn.commit()
-
- # 关闭游标和连接
- cursor.close()
- conn.close()
port 可以不指定,默认 port=3306(除非你的mysql端口非3306)
可以在phpMyAdmin看到数据库text1已经创建好了
创建好数据库后,就是创建表了,在pymysql中,可以通过执行CREATE TABLE的SQL命令来创建表。
例如:在text数据库中创建一个名为mytable的表,这个表有两个字段:id和name。具体sql代码实现不做说明
- import pymysql
-
- # 创建连接
- conn = pymysql.connect(host="localhost", user="root", password="password", db="text")
-
- # 创建游标
- cursor = conn.cursor()
-
- # 执行SQL
- cursor.execute(
- """
- CREATE TABLE mytable (
- id INT AUTO_INCREMENT PRIMARY KEY, -- 主键自增,INT类型
- name VARCHAR(40) NOT NULL -- 非空,最大长度40
- )
- """
- )
- # 提交,不然无法保存新建或者修改的数据
- conn.commit()
-
- # 关闭游标和连接
- cursor.close()
- conn.close()
注意:想在特定数据库中插入表,需要指定数据库db=“text”,否则会报错的
与上面的相同,同样是使用sql代码,在pymysql中,可以通过执行INSERT INTO的SQL命令来插入数据。
例如,在上面创建的表 mytable 中插入6行数据:
- import pymysql
-
- # 创建连接
- conn = pymysql.connect(host="localhost", user="root", password="password", db="text")
-
- # 创建游标
- cursor = conn.cursor()
-
- # 执行SQL
- cursor.execute("INSERT INTO mytable (name) VALUES ('test')") # 插入一条数据
- cursor.execute("INSERT INTO mytable (name) VALUES ('test1')") # 插入一条数据
- cursor.execute("INSERT INTO mytable (name) VALUES ('test2')") # 插入一条数据
- cursor.execute("INSERT INTO mytable (name) VALUES ('test3')")
- cursor.execute("INSERT INTO mytable (name) VALUES ('test4')")
- cursor.execute("INSERT INTO mytable (name) VALUES ('test5')")
-
- # 提交,不然无法保存新建或者修改的数据
- conn.commit()
-
- # 关闭游标和连接
- cursor.close()
- conn.close()
可以看到数据插入成功
使用sql代码,在pymysql中,可以通过执行UPDATE的SQL命令来更新数据。
例如:
- import pymysql
-
- # 创建连接
- conn = pymysql.connect(host="localhost", user="root", password="password", db="text")
-
- # 创建游标
- cursor = conn.cursor()
-
- # 执行SQL
- cursor.execute(
- "UPDATE mytable SET name='newtest' WHERE name='test'"
- ) # 修改name为test的数据为newtest
-
- # 提交,不然无法保存新建或者修改的数据
- conn.commit()
-
- # 关闭游标和连接
- cursor.close()
- conn.close()
结果如下:
这是比较重要的一部分,数据库不但需要插入数据,也需要查询数据。在pymysql中,可以通过执行SELECT的SQL命令来查询数据。
查询所有数据,例如:
- import pymysql
-
- # 创建连接
- conn = pymysql.connect(host="localhost", user="root", password="password", db="text")
-
- # 创建游标
- cursor = conn.cursor()
-
- # 执行SQL
- cursor.execute("SELECT * FROM mytable") # 查询所有数据
-
- # 获取所有数据
- data = cursor.fetchall()
-
- # 打印数据
- for row in data:
- print(row)
-
- # 关闭游标和连接
- cursor.close()
- conn.close()
结果如下:
- (1, 'newtest')
- (2, 'test1')
- (3, 'test2')
- (4, 'test3')
- (5, 'test4')
- (6, 'test5')
可以通过执行DELETE的SQL命令来删除数据。
以下是一个示例,它将删除mytable表中id为1的行:
- import pymysql
-
- # 创建连接
- conn = pymysql.connect(host="localhost", user="root", password="password", db="text")
-
- # 创建游标
- cursor = conn.cursor()
-
- # 执行SQL
- cursor.execute("DELETE FROM mytable WHERE id=1") # 删除id为1的数据
-
- # 提交,不然无法保存新建或者修改的数据
- conn.commit()
-
- # 关闭游标和连接
- cursor.close()
- conn.close()
结果:
并不推荐,一个优秀的表,应该避免修改表的结构。在数据库设计中,修改表结构通常是需要避免的,因为这可能会导致数据丢失,或者需要进行复杂的数据迁移。
可以通过执行ALTER TABLE的SQL命令来修改表结构。以下是一个示例,它将在mytable表中添加一个age列:
- import pymysql
-
- # 创建连接
- conn = pymysql.connect(host="localhost", user="root", password="password", db="text")
-
- # 创建游标
- cursor = conn.cursor()
-
- # 执行SQL
- cursor.execute("ALTER TABLE mytable ADD COLUMN age INT") # 添加一个age列
-
- # 提交,不然无法保存新建或者修改的数据
- conn.commit()
-
- # 关闭游标和连接
- cursor.close()
- conn.close()
结果:
在pymysql中,你可以使用try/except语句来捕获和处理可能出现的数据库错误。以下是一个示例,它将捕获和处理pymysql可能抛出的错误。
- import pymysql
-
- try:
- # 创建连接
- conn = pymysql.connect(
- host="localhost", user="root", password="password", db="text"
- )
-
- # 创建游标
- cursor = conn.cursor()
-
- # 执行SQL
- cursor.execute("SELECT age1 FROM mytable WHERE id=1") # 查询id为1的数据
-
- # 获取所有数据
- data = cursor.fetchall()
-
- # 打印数据
- for row in data:
- print(row)
-
- except pymysql.Error as e:
- print(f"An error occurred: {e}")
-
- finally:
- # 关闭游标和连接
- cursor.close()
- conn.close()
结果:
An error occurred: (1054, "Unknown column 'age1' in 'field list'")
在pymysql中,可以使用cursor.executemany()方法来一次执行多条SQL语句。以下是一个示例,它将插入多条数据到mytable表中:
- import pymysql
-
- # 创建连接
- conn = pymysql.connect(host="localhost", user="root", password="password", db="text")
-
- # 创建游标
- cursor = conn.cursor()
-
- # SQL插入语句
- sql = "INSERT INTO mytable(name, age) VALUES(%s, %s)"
-
- # 要插入的数据
- values = [("Tom", 20), ("Jerry", 22), ("Spike", 23)]
-
- # 执行多条SQL语句
- cursor.executemany(sql, values)
-
- # 提交,不然无法保存新建或者修改的数据
- conn.commit()
-
-
- # 关闭游标和连接
- cursor.close()
- conn.close()
在pymysql中,可以通过执行DROP TABLE的SQL命令来删除表。以下是一个示例,它将删除mytable表。
- import pymysql
-
- try:
- # 创建连接
- conn = pymysql.connect(
- host="localhost", user="root", password="password", db="text"
- )
-
- # 创建游标
- cursor = conn.cursor()
-
- # 执行SQL
- cursor.execute("DROP TABLE IF EXISTS mytable")
-
- # 提交,不然无法保存新建或者修改的数据
- conn.commit()
-
- except pymysql.Error as e:
- print(f"An error occurred: {e}")
-
- finally:
- # 关闭游标和连接
- cursor.close()
- conn.close()
在pymysql中,可以通过执行DROP DATABASE的SQL命令来删除数据库。以下是一个示例,它将删除text数据库。
- import pymysql
-
- try:
- # 创建连接
- conn = pymysql.connect(host="localhost", user="root", password="password")
-
- # 创建游标
- cursor = conn.cursor()
-
- # 执行SQL
- cursor.execute("DROP DATABASE IF EXISTS text")
-
- # 提交,不然无法保存新建或者修改的数据
- conn.commit()
-
- except pymysql.Error as e:
- print(f"An error occurred: {e}")
-
- finally:
- # 关闭游标和连接
- cursor.close()
- conn.close()
这个Python教程介绍了如何使用pymysql库来连接MySQL数据库并执行基本的数据库操作。
然而,要充分利用pymysql,还需要了解SQL语法。SQL是一种用于查询和操作数据库的语言,而pymysql只是一个工具,它使你能够在Python中使用SQL操作MySQL数据库。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。