Python--MySQL及其使用

1. MySQL 简介

MySQL 是一个开源的关系型数据库管理系统(RDBMS),广泛用于各种应用程序,支持多种操作系统。它使用 SQL 语言进行数据查询、管理和操作。

2. MySQL 的主要特点

  • 跨平台:支持多种操作系统,如 Linux、Windows、Mac OS 等。
  • 高性能:优化的查询处理和缓存机制,提供高并发处理能力。
  • 安全性:提供用户认证、访问控制和数据加密等安全机制。
  • 易用性:通过图形界面和命令行工具简化数据库管理。

3. Python 连接 MySQL

Python 通过 pymysql 库可以方便地与 MySQL 数据库进行交互。以下是一些基础操作的示例。

3.1 安装 pymysql

首先需要安装 pymysql 库:

bash 复制代码
pip install pymysql

3.2 连接数据库

使用 pymysql 连接 MySQL 数据库:

python 复制代码
from pymysql import Connection

conn = Connection(
    host="localhost",   # 主机名(IP)
    port=3306,          # 端口
    user="root",        # 账户
    password="123456",   # 密码
    autocommit=True     # 设置自动提交
)

3.3 选择数据库

python 复制代码
conn.select_db("py_sql")

3.4 执行 SQL 语句

python 复制代码
cursor = conn.cursor()      # 获取到游标对象
cursor.execute("insert into student values(10001, '周杰轮', 31, '男')")

3.5 查询数据

python 复制代码
cursor.execute("SELECT * FROM orders")
result = cursor.fetchall()
for r in result:
    print(r)

3.6 关闭连接

python 复制代码
conn.close()

4. 数据导入与导出

4.1 从文本文件导入数据

假设有一个文本文件 D:/2011年1月销售数据.txt,我们可以使用自定义的 TextFileReader 类读取数据,并将其导入到 MySQL 数据库中。

python 复制代码
from file_define_mysql import TextFileReader
from data_define_mysql import Record
from pymysql import Connection

text_file_reader = TextFileReader("D:/2011年1月销售数据.txt")
jan_data: list[Record] = text_file_reader.read_data()

conn = Connection(
    host="localhost",
    port=3306,
    user="root",
    password="123456",
    autocommit=True
)
cursor = conn.cursor()
conn.select_db("py_sql")

for record in jan_data:
    sql = f"insert into orders(order_date, order_id, money, province) " \
          f"values('{record.date}', '{record.order_id}', {record.money}, '{record.province}')"
    cursor.execute(sql)

conn.close()

4.2 从 JSON 文件导入数据

类似地,可以从 JSON 文件读取数据并导入到 MySQL 数据库中。

python 复制代码
from file_define_mysql import JsonFileReader
from data_define_mysql import Record
from pymysql import Connection

json_file_reader = JsonFileReader("D:/2011年2月销售数据JSON.txt")
feb_data: list[Record] = json_file_reader.read_data()

conn = Connection(
    host="localhost",
    port=3306,
    user="root",
    password="123456",
    autocommit=True
)
cursor = conn.cursor()
conn.select_db("py_sql")

for record in feb_data:
    sql = f"insert into orders(order_date, order_id, money, province) " \
          f"values('{record.date}', '{record.order_id}', {record.money}, '{record.province}')"
    cursor.execute(sql)

conn.close()

4.3 从 MySQL 导出数据到 JSON 文件

将 MySQL 中的数据导出到 JSON 文件。

python 复制代码
from data_define_mysql import Record
from pymysql import Connection

f = open("d:/output.json", "w", encoding="UTF-8")
conn = Connection(
    host="localhost",
    port=3306,
    user="root",
    password="123456",
    autocommit=True
)
cursor = conn.cursor()
conn.select_db("py_sql")
cursor.execute("SELECT * FROM orders")
result = cursor.fetchall()

for r in result:
    record = Record(r[0], r[1], r[2], r[3])
    f.write(record.to_json())
    f.write("\n")

conn.close()
f.close()

5. 注意事项

  • 数据安全:在处理敏感数据时,确保使用加密连接和安全密码。
  • 错误处理:在实际应用中,应添加错误处理逻辑,确保程序的健壮性。
  • 性能优化:在处理大量数据时,考虑使用批处理和索引优化查询性能。

通过以上示例和说明,可以基本掌握 Python 与 MySQL 的交互操作,实现数据的导入、导出和管理。

相关推荐
笨鸟先飞,勤能补拙4 小时前
AI 赋能网络安全:技术全景、成熟度评估与实战案例
人工智能·python·安全·web安全·网络安全·sqlite·github
天桥下的卖艺者4 小时前
使用scitable包,两步生成逆概率删失权重(IPCW)
数据库·r语言
微学AI4 小时前
一根针指向所有方向:挂谷猜想对 LLM Agent 技能-记忆架构的启示
开发语言·人工智能·架构·挂谷猜想
隔窗听雨眠4 小时前
AI原生数据库浪潮:国产数据库的架构重构与路径之争
数据库
长和信泰光伏储能4 小时前
京津冀光伏发电:绿色能源的未来之路
python·能源
数据库小学妹4 小时前
数据库选型实战:从数据类型到TCO成本,五维决策框架+九款产品横评
数据库·信创·国产数据库·数据库选型·oracle迁移
豆瓣鸡5 小时前
算法日记 - Day3
java·开发语言·算法
浦信仿真大讲堂5 小时前
从重复操作到自动化闭环:如何让 CST 与 Python 真正协同起来
python·自动化·cst·仿真软件·达索软件
韭菜炒鸡肝天5 小时前
VTK开发笔记(一):VTK介绍,Qt..+VSx+VTK.编译
开发语言·笔记·qt
Gu Gu Study5 小时前
ScoutLoop开放域深度研究引擎(agent的初步设计想法)
人工智能·python