связь между py mysql и sqlalchemy - PullRequest
0 голосов
/ 05 мая 2020

Я использовал много 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)
...