pymysql 和 sqlalchemy 的关系

relationship between pymysql and sqlalchemy

提问人:Michael Li 提问时间:5/6/2020 更新时间:5/6/2020 访问量:3741

问:

我用过很多python pandas和MySQL。但以分开的方式。 为了实现更好的自动化任务,我开始了解pymysql。

对我来说,我发现一些数据库操作只能通过pymysql + pandas操作来实现。 但是,对于某些数据库操作,我必须使用sqlachemy来创建引擎。这让我感到困惑。那里是 sqlalechmy 的引擎是什么 以及发动机与连接的区别/关系

基于官方文档 pymysql:此包包含一个纯 Python MySQL 客户端库。

据我了解,基本上,它是连接python和mysql之间的驱动程序。 由于熊猫有read_sql方法方法,

因此,我应该通过将这两者结合起来来实现所有数据库操作。

例如,基于以下内容

etl_conn = pymysql.connect(host = host, user = user,password = passwd,db = db_health_plan)
query = 'select * from HEALTH_PLAN.WD_PNL_MONTHLY'
pd.read_sql(query, etl_conn, index_col = 'index')

我可以使用 pandas.io 和 pymysql 创建一个表

from pandas.io import sql
create_table_query ='CREATE TABLE WD_PNL_MONTHLY_05052020 AS SELECT * FROM 
HEALTH_PLAN.WD_PNL_MONTHLY';
sql.execute(create_table_query, etl_conn)

但是,当我尝试将行插入表中时,我失败了。

total.to_sql('WD_PNL_MONTHLY', etl_conn,
schema= 'HEALTH_PLAN', if_exists='append', 
index=True, index_label=None, chunksize=None, dtype=None)

为了完成任务,我必须创建引擎链接sqlalchemy和pymysql

db_connection_str = 'mysql+pymysql://****'
from sqlalchemy import create_engine
sql_engine = create_engine(db_connection_str)

然后,以下方法有效

total.to_sql('WD_PNL_MONTHLY', sql_engine,
schema= 'HEALTH_PLAN', if_exists='append', 
index=True, index_label=None, chunksize=None, dtype=None)
MySQL 熊猫 SQL炼金 术IO pymysql

评论


答: 暂无答案