【问题标题】:Make Python wait until to_sql has finished让 Python 等到 to_sql 完成
【发布时间】:2019-05-28 13:17:28
【问题描述】:

我正在使用 to_sql 将我的数据帧导出到 SQL Server 表中,但是我想延迟下一行 python 代码的执行,直到插入完成。

我对数据库连接有一定的了解,但在尝试了解 python 和 sql server 的通信方式时我有点菜鸟。

engine = db.create_engine('mssql+pyodbc://username:password@ServerName/Database?driver=SQL+Server+Native+Client+11.0')

df.to_sql('Table', engine, schema = 'dbo', if_exists='append',index=False)

#Don't execute this until all the records have been added
print("All my records have been added to SQL")

任何帮助将不胜感激。

谢谢

【问题讨论】:

  • Python 逐行执行。所以在df.to_sql 行结束之前它不应该继续。
  • 即使插入尚未完成,只要执行了 to_sql,它就会立即打印消息。我已经通过随后立即触发 SQL 查询来捕获插入的不返回任何内容的记录来测试这一点
  • 我每天写一个ms sql,它肯定是逐行执行的。你确定你连接到正确的分贝吗?

标签: sql-server python-3.x pandas pandas-to-sql


【解决方案1】:

终于让它工作了,因为没有使用 autocommit = true

【讨论】:

  • 嗨,我需要做类似的事情,你介意显示你必须在哪里放入自动提交吗?谢谢@Big_Daz
  • 嗨,幸运的是,我保存了所有代码以备将来使用,所以这就是我解决它的方法:#Start of the process to export the result back into SQL import sqlalchemy as db from sqlalchemy import event #SQL Connection string engine = db.create_engine('mssql+pyodbc://**USERNAME**:**PASSWORD**@**SERVER NAME/**DATABSE**?driver=SQL+Server+Native+Client+11.0')
  • #将数据导出到表 finaldf.to_sql('TABLE NAME', engine, schema = 'dbo', if_exists='append',index=False)
  • 那么就不需要自动提交了吗?我试试这个谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 2016-11-23
  • 1970-01-01
  • 1970-01-01
  • 2017-03-06
  • 2019-02-03
  • 1970-01-01
相关资源
最近更新 更多