【发布时间】:2021-06-15 05:05:50
【问题描述】:
pandas 中的 to_sql() 函数现在正在生成 SADeprecationWarning。
df.to_sql(name=tablename, con=c, if_exists='append', index=False )
[..]/lib/python3.8/site-packages/pandas/io/sql.py:1430: SADeprecationWarning:The Connection.run_callable() method is deprecated and will be removed in a future release. Use a context manager instead. (deprecated since: 1.4)
在运行 sql select 语句时,即使使用 df.read_sql() 命令,我也得到了这个。将其更改为它所环绕的原始df.read_sql_query(),摆脱它。我怀疑那里会有一些联系。
所以,问题是,我如何将数据帧表写入 SQL,而不会在未来的版本中被弃用? “使用上下文管理器”是什么意思,我该如何实现?
版本:
熊猫:1.1.5 | SQLAlchemy:1.4.0 | pyodbc:4.0.30 | Python:3.8.0
使用 mssql 数据库。
操作系统:Linux Mint Xfce,18.04。使用 python 虚拟环境。
如果重要,连接创建如下:
conn_str = r'mssql+pyodbc:///?odbc_connect={}'.format(dbString).strip()
sqlEngine = sqlalchemy.create_engine(conn_str,echo=False, pool_recycle=3600)
c = sqlEngine.connect()
在db操作之后,
c.close()
这样做可以使主连接 sqlEngine 在 api 调用之间保持“活动”,并让我使用池连接,而不必重新连接。
【问题讨论】:
标签: python pandas dataframe sqlalchemy