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库

# 安装pymsql库
pip install pymysql
# 使用清华镜像源进行安装
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数据库

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'")

 执行多条SQL语句

在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数据库。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值