【发布时间】:2019-09-24 19:20:27
【问题描述】:
背景
我有 3 个独立的 python 脚本,它们共享相同的结构并有效地执行相同的操作 - 调用 API 请求,检索 XML 数据,将 XML 转换为 ElementTree 对象,然后转换为 pandas DataFrame 对象,然后使用 .to_sql() 导入将该数据框导入到 oracle 数据库中。我写的三个脚本中有两个是成功的,但第三个没有写入数据库,没有返回错误,表创建为空,脚本挂起
来自成功文件的代码:
oracle_db = sa.create_engine('oracle://sName:sName@123.456.78/testDB')
connection = oracle_db.connect()
df.to_sql('TABLE_NAME', connection, if_exists='append',index = False)
我会发布不成功文件的代码,但除了表和变量名之外,它实际上是相同的。
我尝试了什么
我尝试使用 cx_oracle 的引擎来驱动与 数据库没有成功:
conn = cx_Oracle.connect("sName", "sName","123.456.789.1/Test", encoding = "UTF-8")
我已验证数据框有效。
我已经验证了与数据库的连接。
【问题讨论】:
-
您是否检查过是否有任何其他代码(可能是前两个脚本?)在有问题的表上有未处理的事务?这可以很好地解释挂起!
-
@AnthonyTuinga 没有骰子,我将“connection.close()”移动到脚本的前面以获取任何打开的连接,虽然它没有抛出错误,但数据仍然没有被写入到数据库。
-
通过查看
dba_locks视图来检查是否有任何锁阻止了插入。
标签: python sqlalchemy python-requests cx-oracle pandas-to-sql