python操作mysql——pymysql

使用pymysql操作mysql 数据库

添加依赖

pip install pymysql

连接数据库

# 导入模块
import pymysql.cursors

# 连接数据库
conn = pymysql.Connect(host="127.0.0.1",
                       port=3306,
                       user="root",
                       passwd='root',
                       db='db')
# 获取游标
cursor = conn.cursor()

执行sql语句

# 要执行的sql语句
sql = "select id from customer limit 10"

try:
    # 执行sql
    cursor.execute(sql)
    # 提交到数据库
    conn.commit()
except Exception:
    # 发生异常则回滚
    conn.rollback()

获取执行结果

# fetchone() 获取第一条结果数据
# fetchall() 获取全部结果数据
# fetchmany(size) 获取size条数据 从第一条开始
# 返回的数据为一个元组

print(cursor.fetchone()) 
print(cursor.fetchmany(5))
print(cursor.fetchall())
结果打印
需要注意数据只能从游标中取出一次  
输出结果:  
(1598,) # fetchone() 获取第一条数据   
((2306,), (1599,), (1600,), (2307,), (1601,)) # fetchmany(5) 获取5条数据 从第二条开始  
((1602,), (1603,), (1604,), (1605,)) # fetchall() 获取游标中剩下所有数据  

获取json数据

# 在上边的游标获取方法中添加如下参数即可
# 返回数据为json格式
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
此时打印出来的结果
{'id': 1598}
[{'id': 2306}, {'id': 1599}, {'id': 1600}, {'id': 2307}, {'id': 1601}]
[{'id': 1602}, {'id': 1603}, {'id': 1604}, {'id': 1605}]

封装工具类

日常工作可能使用多个数据库连接来进行数据清洗等工作,把数据库进行动态配置

调用类
# db.py
import pymysql.cursors
import json


class Dao:

    def __init__(self, envir):
        """
        初始化数据库连接
        :param envir: 数据库连接环境  dev / test / pre / prod
        """
        self.connect = pymysql.Connect(**json.load(open('db-config.json', encoding='utf8'))[envir])

    def execute_sql(self, sql):
        pass

    def execute_fetchone(self, sql):
        """
        单条结果sql查询
        :param sql: 要执行的sql语句
        :return: 获取单条查询结果
        """
        cursor = self.connect.cursor(cursor=pymysql.cursors.DictCursor)
        try:
            # 执行sql语句
            cursor.execute(sql)
            # 提交到数据库执行
            self.connect.commit()
        except Exception:
            # 如果发生错误则回滚
            self.connect.rollback()

        return cursor.fetchone()

    def execute_fetchall(self, sql):
        """
        列表数据sql查询
        :param sql: 要执行的sql语句
        :return: 查询列表结果
        """
        cursor = self.connect.cursor(cursor=pymysql.cursors.DictCursor)
        try:
            # 执行sql语句
            cursor.execute(sql)
            # 提交到数据库执行
            self.connect.commit()
        except Exception:
            # 如果发生错误则回滚
            self.connect.rollback()

        return cursor.fetchall()

json配置 db-config.json
{
  "dev": {
    "host": "localost",
    "port": 3306,
    "user": "root",
    "passwd": "root",
    "db": "db"
  },

  "test": {
    "host": "test-host",
    "port": 3306,
    "user": "test",
    "passwd": "test",
    "db": "db"
  },

  "pre": {
    "host": "pre-host",
    "port": 3306,
    "user": "pre",
    "passwd": "pre",
    "db": "db"
  },

  "prod": {
    "host": "prod",
    "port": 3306,
    "user": "prod",
    "passwd": "prod",
    "db": "db"
  }
}
利用封装好的类执行之前的sql
dao = Dao('dev')
sql = "select id from customer limit 10"
res = dao.execute_fetchall(sql)
print(res)

# 输出结果
[{'id': 1598}, {'id': 2306}, {'id': 1599}, {'id': 1600}, {'id': 2307}]

之后就可以使用python 愉快的操作数据库了,后续可以根据需要结合openpyxl 把查询出来的数据导入excel做进一步处理。

以上 over

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python可以使用多种库来操作MySQL数据库,其中包括PyMySQLmysqlclient。PyMySQL是一个纯Python编写的库,安装非常简单,而mysqlclient是底层使用C编写的库,安装可能会有一些问题。\[3\]你可以根据自己的需求选择其中之一进行安装和使用。 在使用PyMySQL库时,你可以使用%s作为参数占位符来执行SQL操作,这与Python自带的sqlite3模块的占位符问号(?)有所不同。如果需要更详细的文档,你可以参考PyMySQL的官方文档。\[2\] 如果你想了解更多关于Python操作MySQL的知识,可以参考一些专门的章节或教程,这些资源会更详细地介绍如何使用Python来进行MySQL数据库操作。\[1\]希望这些信息对你有所帮助! #### 引用[.reference_title] - *1* [Python操作MySQL](https://blog.csdn.net/sanylove/article/details/124166373)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [太全了——用Python操作MySQL的使用教程集锦](https://blog.csdn.net/m0_59485658/article/details/126364328)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Python操作MySql](https://blog.csdn.net/PAN_BING/article/details/120812542)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值