【发布时间】:2020-11-20 01:45:02
【问题描述】:
我来找你是因为我无法解决 pandas.DataFrame.to_sql() 方法的问题。
我已经在我的脚本和我的数据库之间建立了连接,我可以发送查询,但实际上它对我来说太慢了。
我想找到一种方法来提高我的脚本在这方面的性能。也许有人会找到解决方案?
这是我的代码:
engine = sqlalchemy.create_engine(con['sql']['connexion_string'])
conn = engine.connect()
metadata = sqlalchemy.Metadata()
try :
if(con['sql']['strategy'] == 'NEW'):
query = sqlalchemy.Table(con['sql']['table'],metadata).delete()
conn.execute(query)
Sql_to_deploy.to_sql(con['sql']['table'],engine,if_exists='append',index = False,chunksize = 1000,method = 'multi')
elif(con['sql']['strategy'] == 'APPEND'):
Sql_to_deploy.to_sql(con['sql']['table'],engine,if_exists='append',index = False,chunksize = 1000,method = 'multi')
else:
pass
except Exception as e:
print(type(e))
当我退出 chunksize 和方法参数时,它正在工作并且太慢,这是它太慢的时刻(30000 行几乎 3 分钟)。当我输入这些参数时,我得到一个sqlalchemy.exc.ProgrammingError...
感谢您的帮助!
【问题讨论】:
-
您使用的是哪个数据库后端?
-
你使用的是mssql/pyodbc吗?
-
您可能想在codereview.stackexchange.com 上发布此内容,它更关注此类请求
-
我使用的是 SQL Server,用 mssql+pyodbc 作为 windows authetification。
-
您在使用“ODBC Driver 17 for SQL Server”吗?
标签: python sql-server pandas sqlalchemy pyodbc