Pandas连接MySQL数据库

pandas是一个强大的Python工具包,能够快速帮助我们做很多数据处理。但是在利用pandas连接数据库时,也会遇到很多问题,在此我总结了一个相对较为简单的连接范式,供大家参考学习。

先上代码:

python 复制代码
import pandas as pd

# 数据库参数
MYSQL_USER = 'root'
MYSQL_PASS = '****' # 你的密码
MYSQL_HOST = "localhost" # 你的host
MYSQL_PORT = 3306
MYSQL_CHARSET = 'utf8mb4' # 数据库编码格式

# 数据库名称
MYSQL_DATABASE = "system"

import pymysql
from sqlalchemy import create_engine

# url
MYSQL_DATABASE_URL = fr"mysql+pymysql://{MYSQL_USER}:{MYSQL_PASS}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DATABASE}?charset={MYSQL_CHARSET}"
# 创建引擎
engine = create_engine(MYSQL_DATABASE_URL)

# 数据库调用函数
def access_db(sql, data=None, is_many=False):
    '''
    :param sql: sql执行语句
    :param data: 数据,如果没有数据则执行sql代码
    :param is_many: 是否为多条数据
    :return: 查询数据
    '''
    conn = pymysql.connect(host=MYSQL_HOST, port=MYSQL_PORT, user=MYSQL_USER,
                         password=MYSQL_PASS, db=MYSQL_DATABASE, charset=MYSQL_CHARSET)
    cur = conn.cursor()

    if is_many:
        try:
            cur.executemany(sql, data)
            conn.commit()
        except Exception as e:
            print(e)
            conn.rollback()
    elif data:
        try:
            cur.execute(sql, data)
            conn.commit()
        except Exception as e:
            print(e)
            conn.rollback()
    else:
        cur.execute(sql)
        exe_data = cur.fetchall()
        conn.commit()
        return exe_data
    cur.close()
    conn.close()

# 查询数据
sql = "select * from user"
df_user = pd.read_sql(sql=sql, con=engine)
print(df_user)

上述代码中用到的函数,在查询语句,插入语句(一次可插入一条或多条)等方面都可以直接调用,但需要确保sql语句的正确性,注意更改数据库参数为你自己需要连接的数据库,sql建议在代码调用前最好直接在数据库进行过查询并能够获取到正确的数据再放入代码层,避免因为一些基本语法问题导致问题定位浪费时间和精力。

相关推荐
Database_Cool_14 小时前
OLTP 和 OLAP 区别详解:分析型数据库和事务型数据库怎么选(附阿里云 AnalyticDB MySQL 选型指南)
数据库·mysql·阿里云
Database_Cool_15 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
姜太小白16 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql
liuxiaowei317 小时前
【绝版教程】新版MySQL DBA高级实战进阶班 MySQL8.0 姜承尧-腾讯数据库总监
数据库·mysql·dba
sg_knight19 小时前
MySQL 存储过程详解:从入门到实战
android·数据库·mysql·database·dba·关系型数据库·db
Database_Cool_21 小时前
企业级多模态分析计算引擎选型:首选 AnalyticDB MySQL 向量 + SQL + 实时一体化方案
数据库·sql·mysql
宇宙第一小趴菜1 天前
五、Oracle vs MySQL 架构深度对比笔记
mysql·oracle·架构
Database_Cool_1 天前
云数据仓库开通指南:阿里云 AnalyticDB MySQL 10 分钟从 0 到分析实战教程
数据仓库·mysql·阿里云
—Miss. Z—1 天前
计算机二级MySQL——简单应用题(事件&视图)
android·mysql·adb
会编程的土豆1 天前
MySQL 中的 IN 和 EXISTS(零基础笔记)
数据库·笔记·mysql