最佳答案
我想发送一个大的 pandas.DataFrame
到一个远程服务器运行的 MS SQL。现在的方法是将一个 data_frame
对象转换为一个元组列表,然后使用 pyODBC 的 executemany()
函数将其发送出去。大概是这样的:
import pyodbc as pdb
list_of_tuples = convert_df(data_frame)
connection = pdb.connect(cnxn_str)
cursor = connection.cursor()
cursor.fast_executemany = True
cursor.executemany(sql_statement, list_of_tuples)
connection.commit()
cursor.close()
connection.close()
然后我开始怀疑是否可以通过使用 data_frame.to_sql()
方法来加速(或者至少更具可读性)。我想出了以下的解决办法:
import sqlalchemy as sa
engine = sa.create_engine("mssql+pyodbc:///?odbc_connect=%s" % cnxn_str)
data_frame.to_sql(table_name, engine, index=False)
现在代码更易读,但上传是 至少慢150倍..。
在使用 SQLAlchemy 时有没有翻转 fast_executemany
的方法?
我正在使用熊猫 -0.20.3、 pyODBC-4.0.21和 sql 炼金术 -1.1.13。