Выполнить несколько выполнений / запросов в одной строке - PullRequest
0 голосов
/ 23 июня 2019

У меня есть следующий код:

import pandas as pd
import numpy as np
import MySQLdb
from sqlalchemy import create_engine

df = pd.read_csv('pricelist.csv')

old_df = df[['date','time','old_price']]
new_df = df[['date','time','new_price']]

engine = create_engine('mysql+mysqldb://root:python@localhost:3306/pricedb', echo = False)

old_df.to_sql(name='temporary_table_old', con=engine, if_exists = 'append', index=False)
new_df.to_sql(name='temporary_table_new', con=engine, if_exists = 'append', index=False)

with engine.begin() as cnx:
    sql_insert_query_old = 'REPLACE INTO oldlist (SELECT * FROM temporary_table_old)'
    sql_insert_query_new = 'REPLACE INTO newlist (SELECT * FROM temporary_table_new)'
    cnx.execute(sql_insert_query_old)
    cnx.execute(sql_insert_query_new)
    cnx.execute("DROP TABLE temporary_table_old")
    cnx.execute("DROP TABLE temporary_table_new")

Приведенный выше код работает, но можно ли кратко описать приведенный выше код для cnx.execute и sql_insert_query_'x '(блок "with"). Я не уверен, что если производительность будет мудрой, наличие такого количества строк исполнения и вставки приведет к снижению производительности. Мой код в конечном итоге будет содержать довольно много этих строк для извлечения определенных столбцов из кадра данных Pandas и вставки в базу данных MySQL.

Я пытался Google, но это не очень помогает.

Большое спасибо!

...