「Python系列」Python MySQL

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 在Python中使用MySQL数据库通常涉及使用一个称为`mysql-connector-python`的库,这是MySQL官方推荐的Python连接器。下面是如何在Python中连接到MySQL数据库、执行查询和插入数据的基本步骤。

一、Python MySQL

在Python中使用MySQL数据库通常涉及使用一个称为mysql-connector-python的库,这是MySQL官方推荐的Python连接器。下面是如何在Python中连接到MySQL数据库、执行查询和插入数据的基本步骤。

1. 安装mysql-connector-python

首先,你需要安装mysql-connector-python库。你可以使用pip来安装它:

pip install mysql-connector-python

2. 连接到MySQL数据库

在Python脚本中,你需要导入mysql.connector模块,并使用connect()函数来建立到MySQL服务器的连接。

import mysql.connector

# 创建数据库连接
cnx = mysql.connector.connect(user='your_username', password='your_password',
                              host='your_host', database='your_database')

# 创建游标对象
cursor = cnx.cursor()

3. 执行查询

使用游标对象,你可以执行SQL查询并获取结果。

# 执行查询
query = "SELECT * FROM your_table"
cursor.execute(query)

# 获取所有记录列表
results = cursor.fetchall()

for row in results:
    print(row)

4. 插入数据

你也可以使用游标对象来插入数据。

# 插入数据
add_data = ("INSERT INTO your_table (column1, column2) "
            "VALUES (%s, %s)")
data = ('value1', 'value2')
cursor.execute(add_data, data)

# 提交到数据库执行
cnx.commit()

print(cursor.rowcount, "record inserted.")

5. 关闭连接

完成所有数据库操作后,确保关闭游标和数据库连接。

# 关闭游标和连接
cursor.close()
cnx.close()

6. 错误处理

在实际应用中,你应该添加错误处理来捕获可能出现的任何异常。

try:
    cnx = mysql.connector.connect(user='your_username', password='your_password',
                                  host='your_host', database='your_database')
    cursor = cnx.cursor()

    # ... 执行查询或其他数据库操作 ...

except mysql.connector.Error as err:
    print(f"Error: {err}")

finally:
    if cnx.is_connected():
        cursor.close()
        cnx.close()

7. 使用ORM(对象关系映射)

虽然直接使用SQL语句是常见的做法,但许多开发者也选择使用ORM工具,如SQLAlchemy或Django ORM,它们提供了更高级别的抽象,使数据库操作更加Pythonic。

这些是使用Python和MySQL进行基本交互的步骤。根据你的具体需求,你可能还需要学习更多关于MySQL和Python连接器的高级功能,如预处理语句、事务管理、存储过程和触发器等。

二、创建数据库连接

在Python中创建数据库连接通常涉及使用数据库适配器(或驱动程序),这些适配器允许Python代码与特定类型的数据库进行通信。对于MySQL数据库,常用的适配器是mysql-connector-python,而对于PostgreSQL,常用的适配器是psycopg2。以下是使用mysql-connector-python在Python中创建MySQL数据库连接的示例:

首先,确保你已经安装了mysql-connector-python库。如果没有,可以通过pip进行安装:

pip install mysql-connector-python

然后,你可以使用以下代码创建到MySQL数据库的连接:

import mysql.connector

# 数据库配置信息
config = {
   
    'user': 'your_username',  # 数据库用户名
    'password': 'your_password',  # 数据库密码
    'host': 'your_host',  # 数据库主机名或IP地址
    'database': 'your_database',  # 要连接的数据库名
    'raise_on_warnings': True  # 如果出现警告则引发异常
}

try:
    # 建立数据库连接
    connection = mysql.connector.connect(**config)

    # 如果连接成功,打印一条消息
    if connection.is_connected():
        print("Connected to MySQL database successfully")

    # 创建一个游标对象,用于执行SQL查询
    cursor = connection.cursor()

    # 在此处执行SQL查询或其他数据库操作
    # 例如:
    # cursor.execute("SELECT * FROM your_table")
    # results = cursor.fetchall()
    # for row in results:
    #     print(row)

except mysql.connector.Error as err:
    # 如果出现错误,打印错误信息
    print(f"Error: {err}")

finally:
    # 关闭游标和连接
    if cursor and cursor.is_connected():
        cursor.close()
    if connection and connection.is_connected():
        connection.close()

在上面的代码中,我们首先导入了mysql.connector模块,然后定义了一个包含数据库连接所需信息的字典config。接下来,我们尝试使用mysql.connector.connect()函数和config字典中的信息建立到数据库的连接。

如果连接成功,我们打印一条消息,并创建一个游标对象来执行SQL查询。你可以在此处添加自己的SQL查询和其他数据库操作代码。

如果在尝试建立连接或执行其他数据库操作时发生错误,我们会捕获mysql.connector.Error异常并打印出错误信息。

最后,在finally块中,我们确保游标和连接都被正确关闭,即使发生异常也是如此。

请确保将your_usernameyour_passwordyour_hostyour_database替换为你的数据库的实际用户名、密码、主机名和数据库名。

三、创建数据表

要在Python中创建MySQL数据库的数据表,你首先需要建立一个到数据库的连接,然后创建一个游标对象,使用游标对象执行SQL语句来创建表。以下是使用mysql-connector-python库在Python中创建MySQL数据表的步骤:

  1. 导入mysql.connector模块。
  2. 连接到MySQL数据库。
  3. 创建一个游标对象。
  4. 使用游标对象执行SQL CREATE TABLE 语句来创建表。
  5. 提交更改。
  6. 关闭游标和连接。

下面是一个示例代码,演示了如何在Python中创建MySQL数据表:

import mysql.connector

# 数据库配置信息
config = {
   
    'user': 'your_username',
    'password': 'your_password',
    'host': 'your_host',
    'database': 'your_database'
}

# 连接到数据库
cnx = mysql.connector.connect(**config)

# 创建游标对象
cursor = cnx.cursor()

# SQL语句创建数据表
create_table_query = """
CREATE TABLE IF NOT EXISTS your_table_name (
    id INT AUTO_INCREMENT PRIMARY KEY,
    column1 VARCHAR(255) NOT NULL,
    column2 INT,
    column3 DATE
)
"""

try:
    # 执行SQL语句创建表
    cursor.execute(create_table_query)

    # 提交到数据库执行
    cnx.commit()

    print("Table created successfully")

except mysql.connector.Error as err:
    # 如果有错误,打印错误消息
    print(f"Error: {err}")

finally:
    # 关闭游标和连接
    if cursor and cursor.is_connected():
        cursor.close()
    if cnx and cnx.is_connected():
        cnx.close()

在上面的代码中,请确保替换以下占位符:

  • your_username:你的MySQL用户名
  • your_password:你的MySQL密码
  • your_host:你的MySQL服务器主机名或IP地址
  • your_database:你要在其中创建表的数据库名称
  • your_table_name:你要创建的表的名称
  • column1, column2, column3:表中的列名及其数据类型(根据你的需要修改)

执行这段代码后,如果表中不存在名为your_table_name的表,它将被创建。如果表已经存在,IF NOT EXISTS子句将确保不会因尝试创建已存在的表而引发错误。

请注意,你需要有适当的权限才能在MySQL数据库中创建表。如果遇到权限问题,确保你的MySQL用户具有创建表的权限。

四、操作数据

在Python中操作MySQL数据库通常包括执行查询、插入数据、更新数据和删除数据等。以下是一些基本的操作示例,使用mysql-connector-python库与MySQL数据库进行交互。

首先,确保你已经安装了mysql-connector-python库,如果没有,请通过pip安装:

pip install mysql-connector-python

接下来,你可以使用以下代码来执行基本的MySQL数据库操作:

import mysql.connector

# 数据库配置信息
config = {
   
    'user': 'your_username',
    'password': 'your_password',
    'host': 'your_host',
    'database': 'your_database'
}

# 连接到数据库
cnx = mysql.connector.connect(**config)

# 创建游标对象
cursor = cnx.cursor()

# 查询数据
def select_data():
    query = "SELECT * FROM your_table_name"
    cursor.execute(query)
    results = cursor.fetchall()
    for row in results:
        print(row)

# 插入数据
def insert_data():
    query = "INSERT INTO your_table_name (column1, column2, column3) VALUES (%s, %s, %s)"
    data = ('value1', 123, date(2023, 10, 23))
    cursor.execute(query, data)
    cnx.commit()

# 更新数据
def update_data():
    query = "UPDATE your_table_name SET column1 = %s WHERE id = %s"
    data = ('new_value', 1)
    cursor.execute(query, data)
    cnx.commit()

# 删除数据
def delete_data():
    query = "DELETE FROM your_table_name WHERE id = %s"
    data = (1,)
    cursor.execute(query, data)
    cnx.commit()

# 调用函数执行操作
select_data()
insert_data()
update_data()
delete_data()

# 关闭游标和连接
cursor.close()
cnx.close()

在上面的代码中,请确保替换以下占位符:

  • your_username:你的MySQL用户名
  • your_password:你的MySQL密码
  • your_host:你的MySQL服务器主机名或IP地址
  • your_database:你要操作的数据库名称
  • your_table_name:你要操作的表名
  • column1, column2, column3:表中的列名
  • value1:要插入或更新的实际值
  • 123:要插入或更新的实际值
  • date(2023, 10, 23):要插入或更新的实际日期值(确保导入了datetime模块)

每个函数都执行了不同的数据库操作:

  • select_data:查询表中的所有数据并打印出来。
  • insert_data:向表中插入一行新数据。
  • update_data:更新表中某行的数据。
  • delete_data:从表中删除一行数据。

注意,在执行插入、更新或删除操作后,我们调用了cnx.commit()来提交这些更改到数据库。如果没有这个调用,更改将不会被保存。

此外,为了安全起见,当执行涉及用户输入的操作时(如插入或更新),请始终使用参数化查询(如上述示例中的%s占位符),以防止SQL注入攻击。

最后,确保在完成所有数据库操作后关闭游标和连接,以释放资源。

五、相关链接

  1. Python下载安装中心
  2. Python官网
  3. Python软件下载
  4. 「Python系列」Python简介及案例
  5. 「Python系列」Python基础语法/数据类型
  6. 「Python系列」Python解释器
  7. 「Python系列」Python运算符
  8. 「Python系列」Python数据结构
  9. 「Python系列」Python元组
  10. 「Python系列」Python集合
  11. 「Python系列」Python列表
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
SQL 关系型数据库 MySQL
python操作mysql
python操作mysql
|
1天前
|
XML 关系型数据库 MySQL
python将word(doc或docx)的内容导入mysql数据库
用python先把doc文件转换成docx文件(这一步也可以不要后续会说明),然后读取docx的文件并另存为htm格式的文件(上一步可以直接把doc文件另存为htm),python根据bs4获取p标签里的内容,如果段落中有图片则保存图片。(图片在word文档中的位置可以很好的还原到生成的数据库内容) 我见网上有把docx压缩后解压获取图片的,然后根据在根据xml来读取图片的位置,我觉得比较繁琐。用docx模块读取段落的时候还需要是不是判断段落中有分页等,然而转成htm之后就不用判断那么多直接判断段落里的样式或者图片等就可以了。
36 1
|
1天前
|
JSON 关系型数据库 数据库
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
|
1天前
|
JSON 关系型数据库 数据库
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
|
1天前
|
关系型数据库 MySQL Python
Python操作MySQL(十一)
Python操作MySQL(十一)
32 3
|
1天前
|
SQL 关系型数据库 MySQL
使用Python的pymysql库连接MySQL,执行CRUD操作
使用Python的pymysql库连接MySQL,执行CRUD操作:安装pymysql,然后连接(host='localhost',user='root',password='yourpassword',database='yourdatabase'),创建游标。查询数据示例:`SELECT * FROM yourtable`;插入数据:`INSERT INTO yourtable...`;更新数据:`UPDATE yourtable SET...`;删除数据:`DELETE FROM yourtable WHERE...`。
28 0
|
1天前
|
SQL 关系型数据库 MySQL
Python操作mysql数据库
Python操作mysql数据库
|
1天前
|
缓存 NoSQL 关系型数据库
在Python Web开发过程中:数据库与缓存,MySQL和NoSQL数据库的主要差异是什么?
MySQL与NoSQL的主要区别在于数据结构、查询语言和可扩展性。MySQL是关系型数据库,依赖预定义的数据表结构,使用SQL进行复杂查询,适合垂直扩展。而NoSQL提供灵活的存储方式(如JSON、哈希表),无统一查询语言,支持横向扩展,适用于处理大规模、非结构化数据和高并发场景。选择哪种取决于应用需求、数据模型及扩展策略。
170 0
|
1天前
|
SQL 关系型数据库 MySQL
Python与MySQL数据库交互:面试实战
【4月更文挑战第16天】本文介绍了Python与MySQL交互的面试重点,包括使用`mysql-connector-python`或`pymysql`连接数据库、执行SQL查询、异常处理、防止SQL注入、事务管理和ORM框架。易错点包括忘记关闭连接、忽视异常处理、硬编码SQL、忽略事务及过度依赖低效查询。通过理解这些问题和提供策略,可提升面试表现。
34 6
|
1天前
|
SQL 关系型数据库 MySQL
Python怎么操作Mysql数据库
Python怎么操作Mysql数据库
56 0