python - 从 oracle 表中检索与 csv 文件中的 ID 有关的记录时出错
问题描述
我想将 ID(在 sampledata.csv 中)作为 SQL 查询中的参数传递,并从 Oracle 表中获取 ID 和相应的 CREATED_TIME。
sampledata.csv(我在原始文件中有超过 5K 条记录)
ID
909650124
905901916
908667528
907963151
908610211
907671207
909164586
905595841
908785942
908785942
数据库表数据
ID CREATED_DATE
909650124 03/18/2019 04:37:43 PM
905901916 03/15/2019 11:20:55 PM
908667528 03/15/2019 02:37:16 PM
907963151 03/08/2019 03:19:09 PM
908610211 03/08/2019 03:06:17 PM
907671207 03/07/2019 01:06:58 AM
909164586 03/06/2019 01:42:20 AM
905595841 03/04/2019 11:24:31 PM
908785942 03/03/2019 10:09:40 PM
908785942 03/01/2019 07:51:51 AM
我尝试使用 Toad 使用简单的 SQL 语句获取数据,但记录超过 10K,我想自动化它。
first.py 脚本
import os
import csv
import cx_Oracle
conn = cx_Oracle.connect(user='USER_NAME', password='USER_PASSWORD', dsn=r'DSN_STRING')
db = conn.cursor()
def main():
f = open("sampledata.csv")
reader = csv.reader(f)
for id in reader:
db.execute("SELECT id, created_date FROM userdata_table WHERE merch_order_id = :id",
{'id': id})
print(f"{id} {created_date}")
conn.close()
if __name__ == "__main__":
main()
second.py 脚本
import os
import csv
import cx_Oracle
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
engine = create_engine(r'oracle+cx_oracle://USER_NAME:USER_PASSWORD@DSN_STRING'))
db = scoped_session(sessionmaker(bind=engine))
def main():
f = open("sampledata.csv")
reader = csv.reader(f)
print(reader)
for id in reader:
db.execute("SELECT id, created_date FROM userdata_table WHERE id = :id",{'id': id})
print(f"{id} {created_date}")
if __name__ == "__main__":
main()
在上面的代码中,我尝试读取 CSV 文件中的 ID,然后将 ID 传递到 SQL 语句中,但出现以下错误。有人可以帮助我了解问题出在哪里以及如何纠正吗?
==================================================== ================
cx_Oracle.DatabaseError: ORA-01484: 数组只能绑定到 PL/SQL 语句
解决方案
推荐阅读
- android - 一些错误后,Expo 不会停止重新加载
- node.js - 创建和下载文本文件 - Node.js & React.Js
- dns - 设备无法解析主机
- c# - 在 Visual Studio 中获取当前文件夹中的文件路径并删除 bin/Debug?
- arrays - 如何提取数据,将其转换为 ascii 并将其推送到 javascript 的列表中
- docker - 全局使用 traefik 中间件
- android - 设置错误时不要更改 textinputlayout 提示颜色
- mongodb - 使用 golang 在 mongodb 中进行聚合和过滤的 InvalidPipelineOperator
- c# - 我们可以将 teradata 与 EntityFramework 6 一起使用吗?
- javascript - 使用 jquery UI“checkboxradio”小部件动态创建复选框