当前位置:   article > 正文

python数据保存:使用mysql保存数据_python连接mysql数据库保存数据表

python连接mysql数据库保存数据表

前言

在我之前的博客中,我详细地介绍了如何在Windows 11中安装MySQL,

最全安装Mysql教程,手把手教你如何在win11中安装MySQL-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/btaworld/article/details/138537884

并发布了两篇关于SQL基础入门的文章。

SQL基础语法入门:插入数据,更新数据-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/btaworld/article/details/138607880SQL基础语法入门:创建表,查询表-CSDN博客icon-default.png?t=N7T8https://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库

  1. # 安装pymsql库
  2. pip install pymysql
  3. # 使用清华镜像源进行安装
  4. pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple

创建数据库

创建数据库有2种方法,如果你是根据我之前的教程,使用docker安装mysql并安装了phpMyAdmin,可以使用phpMyAdmin进行数据库创建

使用phpMyAdmin创建数据库

首先打开phpMyAdmin部署的端口,比如我的是8080端口,然后打开http://localhost:8080/,登入

 点击这个

输入数据库名,其他保持默认,点击创建就行了

使用pymysql创建表

使用pymysql创建数据库非常简单,只需要执行一个CREATE DATABASE的SQL命令即可。

例如:创建text1数据库

  1. import pymysql
  2. # 创建连接
  3. conn = pymysql.connect(host="localhost", user="root", password="password")
  4. # 创建游标
  5. cursor = conn.cursor()
  6. # 执行SQL
  7. cursor.execute("CREATE DATABASE text1") # 创建数据库text1
  8. # 提交,不然无法保存新建或者修改的数据
  9. conn.commit()
  10. # 关闭游标和连接
  11. cursor.close()
  12. conn.close()

 port 可以不指定,默认 port=3306(除非你的mysql端口非3306)

可以在phpMyAdmin看到数据库text1已经创建好了

创建表

创建好数据库后,就是创建表了,在pymysql中,可以通过执行CREATE TABLE的SQL命令来创建表。

例如:在text数据库中创建一个名为mytable的表,这个表有两个字段:id和name。具体sql代码实现不做说明

  1. import pymysql
  2. # 创建连接
  3. conn = pymysql.connect(host="localhost", user="root", password="password", db="text")
  4. # 创建游标
  5. cursor = conn.cursor()
  6. # 执行SQL
  7. cursor.execute(
  8. """
  9. CREATE TABLE mytable (
  10. id INT AUTO_INCREMENT PRIMARY KEY, -- 主键自增,INT类型
  11. name VARCHAR(40) NOT NULL -- 非空,最大长度40
  12. )
  13. """
  14. )
  15. # 提交,不然无法保存新建或者修改的数据
  16. conn.commit()
  17. # 关闭游标和连接
  18. cursor.close()
  19. conn.close()

注意:想在特定数据库中插入表,需要指定数据库db=“text”,否则会报错的 

插入数据

与上面的相同,同样是使用sql代码,在pymysql中,可以通过执行INSERT INTO的SQL命令来插入数据。

例如,在上面创建的表 mytable 中插入6行数据:

  1. import pymysql
  2. # 创建连接
  3. conn = pymysql.connect(host="localhost", user="root", password="password", db="text")
  4. # 创建游标
  5. cursor = conn.cursor()
  6. # 执行SQL
  7. cursor.execute("INSERT INTO mytable (name) VALUES ('test')") # 插入一条数据
  8. cursor.execute("INSERT INTO mytable (name) VALUES ('test1')") # 插入一条数据
  9. cursor.execute("INSERT INTO mytable (name) VALUES ('test2')") # 插入一条数据
  10. cursor.execute("INSERT INTO mytable (name) VALUES ('test3')")
  11. cursor.execute("INSERT INTO mytable (name) VALUES ('test4')")
  12. cursor.execute("INSERT INTO mytable (name) VALUES ('test5')")
  13. # 提交,不然无法保存新建或者修改的数据
  14. conn.commit()
  15. # 关闭游标和连接
  16. cursor.close()
  17. conn.close()

可以看到数据插入成功

更新数据

使用sql代码,在pymysql中,可以通过执行UPDATE的SQL命令来更新数据。

例如:

  1. import pymysql
  2. # 创建连接
  3. conn = pymysql.connect(host="localhost", user="root", password="password", db="text")
  4. # 创建游标
  5. cursor = conn.cursor()
  6. # 执行SQL
  7. cursor.execute(
  8. "UPDATE mytable SET name='newtest' WHERE name='test'"
  9. ) # 修改name为test的数据为newtest
  10. # 提交,不然无法保存新建或者修改的数据
  11. conn.commit()
  12. # 关闭游标和连接
  13. cursor.close()
  14. conn.close()

结果如下:

查询数据 

这是比较重要的一部分,数据库不但需要插入数据,也需要查询数据。在pymysql中,可以通过执行SELECT的SQL命令来查询数据。

查询所有数据,例如:

  1. import pymysql
  2. # 创建连接
  3. conn = pymysql.connect(host="localhost", user="root", password="password", db="text")
  4. # 创建游标
  5. cursor = conn.cursor()
  6. # 执行SQL
  7. cursor.execute("SELECT * FROM mytable") # 查询所有数据
  8. # 获取所有数据
  9. data = cursor.fetchall()
  10. # 打印数据
  11. for row in data:
  12. print(row)
  13. # 关闭游标和连接
  14. cursor.close()
  15. conn.close()

结果如下:

  1. (1, 'newtest')
  2. (2, 'test1')
  3. (3, 'test2')
  4. (4, 'test3')
  5. (5, 'test4')
  6. (6, 'test5')

删除数据

可以通过执行DELETE的SQL命令来删除数据。

以下是一个示例,它将删除mytable表中id为1的行:

  1. import pymysql
  2. # 创建连接
  3. conn = pymysql.connect(host="localhost", user="root", password="password", db="text")
  4. # 创建游标
  5. cursor = conn.cursor()
  6. # 执行SQL
  7. cursor.execute("DELETE FROM mytable WHERE id=1") # 删除id为1的数据
  8. # 提交,不然无法保存新建或者修改的数据
  9. conn.commit()
  10. # 关闭游标和连接
  11. cursor.close()
  12. conn.close()

结果:

修改表结构 

并不推荐,一个优秀的表,应该避免修改表的结构。在数据库设计中,修改表结构通常是需要避免的,因为这可能会导致数据丢失,或者需要进行复杂的数据迁移。

可以通过执行ALTER TABLE的SQL命令来修改表结构。以下是一个示例,它将在mytable表中添加一个age列:

  1. import pymysql
  2. # 创建连接
  3. conn = pymysql.connect(host="localhost", user="root", password="password", db="text")
  4. # 创建游标
  5. cursor = conn.cursor()
  6. # 执行SQL
  7. cursor.execute("ALTER TABLE mytable ADD COLUMN age INT") # 添加一个age列
  8. # 提交,不然无法保存新建或者修改的数据
  9. conn.commit()
  10. # 关闭游标和连接
  11. cursor.close()
  12. conn.close()

结果:

错误处理 

在pymysql中,你可以使用try/except语句来捕获和处理可能出现的数据库错误。以下是一个示例,它将捕获和处理pymysql可能抛出的错误。

  1. import pymysql
  2. try:
  3. # 创建连接
  4. conn = pymysql.connect(
  5. host="localhost", user="root", password="password", db="text"
  6. )
  7. # 创建游标
  8. cursor = conn.cursor()
  9. # 执行SQL
  10. cursor.execute("SELECT age1 FROM mytable WHERE id=1") # 查询id为1的数据
  11. # 获取所有数据
  12. data = cursor.fetchall()
  13. # 打印数据
  14. for row in data:
  15. print(row)
  16. except pymysql.Error as e:
  17. print(f"An error occurred: {e}")
  18. finally:
  19. # 关闭游标和连接
  20. cursor.close()
  21. conn.close()

结果:

An error occurred: (1054, "Unknown column 'age1' in 'field list'")

 执行多条SQL语句

在pymysql中,可以使用cursor.executemany()方法来一次执行多条SQL语句。以下是一个示例,它将插入多条数据到mytable表中:

  1. import pymysql
  2. # 创建连接
  3. conn = pymysql.connect(host="localhost", user="root", password="password", db="text")
  4. # 创建游标
  5. cursor = conn.cursor()
  6. # SQL插入语句
  7. sql = "INSERT INTO mytable(name, age) VALUES(%s, %s)"
  8. # 要插入的数据
  9. values = [("Tom", 20), ("Jerry", 22), ("Spike", 23)]
  10. # 执行多条SQL语句
  11. cursor.executemany(sql, values)
  12. # 提交,不然无法保存新建或者修改的数据
  13. conn.commit()
  14. # 关闭游标和连接
  15. cursor.close()
  16. conn.close()

删除表

在pymysql中,可以通过执行DROP TABLE的SQL命令来删除表。以下是一个示例,它将删除mytable表。 

  1. import pymysql
  2. try:
  3. # 创建连接
  4. conn = pymysql.connect(
  5. host="localhost", user="root", password="password", db="text"
  6. )
  7. # 创建游标
  8. cursor = conn.cursor()
  9. # 执行SQL
  10. cursor.execute("DROP TABLE IF EXISTS mytable")
  11. # 提交,不然无法保存新建或者修改的数据
  12. conn.commit()
  13. except pymysql.Error as e:
  14. print(f"An error occurred: {e}")
  15. finally:
  16. # 关闭游标和连接
  17. cursor.close()
  18. conn.close()

删除数据库

在pymysql中,可以通过执行DROP DATABASE的SQL命令来删除数据库。以下是一个示例,它将删除text数据库。

  1. import pymysql
  2. try:
  3. # 创建连接
  4. conn = pymysql.connect(host="localhost", user="root", password="password")
  5. # 创建游标
  6. cursor = conn.cursor()
  7. # 执行SQL
  8. cursor.execute("DROP DATABASE IF EXISTS text")
  9. # 提交,不然无法保存新建或者修改的数据
  10. conn.commit()
  11. except pymysql.Error as e:
  12. print(f"An error occurred: {e}")
  13. finally:
  14. # 关闭游标和连接
  15. cursor.close()
  16. conn.close()

结语

这个Python教程介绍了如何使用pymysql库来连接MySQL数据库并执行基本的数据库操作。

然而,要充分利用pymysql,还需要了解SQL语法。SQL是一种用于查询和操作数据库的语言,而pymysql只是一个工具,它使你能够在Python中使用SQL操作MySQL数据库。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/686400
推荐阅读
相关标签
  

闽ICP备14008679号