提问人:Michael Li 提问时间:5/6/2020 更新时间:5/6/2020 访问量:3741
pymysql 和 sqlalchemy 的关系
relationship between pymysql and sqlalchemy
问:
我用过很多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)
答: 暂无答案
评论