当前位置: 首页 > news >正文

Pandas连接MySQL数据库

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

先上代码:

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_datacur.close()conn.close()# 查询数据
sql = "select * from user"
df_user = pd.read_sql(sql=sql, con=engine)
print(df_user)

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

http://www.lryc.cn/news/341103.html

相关文章:

  • 2024华中杯数学建模参考思路+完整代码+后续成品论文预约
  • ARM_day8:基于iic总线的通信
  • 33、Lua Cocos2d-x使用Luajit实现加密
  • spring 集成 mybatis
  • rtpengine 的端点学习模式
  • Windows 安装 A UDP/TCP Assistant 网络调试助手
  • web自动化系列-selenium的3种等待方式(十一)
  • 每日OJ题_完全背包④_力扣279. 完全平方数(一维和二维)
  • web项目中jsp页面不识别el表达式
  • 【Python基础】字典
  • 2024HW --> 安全产品 Powershell无文件落地攻击
  • 力扣哈哈哈哈
  • RUM 最佳实践-视觉稳定性的探索与实践
  • PostgreSQL的学习心得和知识总结(一百三十八)|深入理解PostgreSQL数据库之Protocol message构造和解析逻辑
  • 爬虫开发教程
  • 【Python】高级进阶(专版提升3)
  • LeetCode 1378、1277、2944
  • 【缓存常见问题】
  • Python爬取猫眼电影票房 + 数据可视化
  • Spring Boot深度解析:是什么、为何使用及其优势所在
  • 面向对象——类与对象
  • Golang的[]interface{}为什么不能接收[]int?
  • 重启服务器或重启docker,导致emqx的Dashboard的密码重置为public
  • 就业班 第三阶段(ansible) 2401--4.16 day2 ansible2 剧本+角色
  • 常用的过滤网站扫描网站攻击的路径是那些,比如:/etc/passwd等
  • 考研数学|《1800》《660》《880》如何选择和搭配?(附资料分享)
  • 论文笔记:Are Human-generated Demonstrations Necessary for In-context Learning?
  • C语言 | Leetcode C语言题解之第28题找出字符串中第一个匹配项的下标
  • 「Python大数据」数据采集-某东产品数据评论获取
  • ORACLE错误提示概述