Я использовал много python pandas и MySQL. но по отдельности. Чтобы добиться большей автоматизации, я начинаю знакомиться с py mysql.
Что касается меня, я обнаружил, что некоторые действия с базой данных я могу выполнить только с помощью действия pymysql + pandas. однако некоторые действия с базой данных, я должен использовать sqlachemy для создания движка. Это меня сбивает с толку. что такое движок от sqlalechmy и разница / взаимосвязь между движком и соединением
на основе официального документа py mysql: Это Пакет содержит чистую клиентскую библиотеку Python MySQL.
Насколько я понимаю, в основном это драйвер, который подключается между python и mysql. поскольку pandas имеет read_ sql method method,
, поэтому я должен был выполнить все действия с базой данных, объединив эти два.
Например, на основе следующего
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 и py mysql
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 и py mysql
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)