【发布时间】:2021-09-28 04:13:46
【问题描述】:
我想从 Oracle 数据库中的多个表中获取行数。我必须使用 Python 将行数插入到另一个表中。
我已经编写了基本代码。如果我想从 20 多个表中获取数据,我必须编写相同的代码 20 次。
对于每张表,我都要关联id。
table_name = ["abc,"def,"ghi","jkl"] & id_to_associate = [11,22,11,33]
表格“final2”中的输出应如下所示,
11, "a", 213, 20-07-21
22, "a", 231, 20-07-21
11, "a", 234, 20-07-21
33, "a", 425, 20-07-21
第三列代表每个表的行数,数据应该添加到另一个名为“final2”的表中。
是否有更简单的方法可以将行与 id 一起插入。下面是我的代码。我想写一个简单的代码。谁能帮我这个。提前致谢。
sql = "select count(*) from abc"
cursor.execute(sql)
d = cursor.fetchone()[0]
row = [11,"a",213,datetime.datetime.now()]
cursor.execute("INSERT INTO final2 VALUES(:1,:2,:3,:4)",row)
sql = "select count(*) from def"
cursor.execute(sql)
d = cursor.fetchone()[0]
row = [22,"a",231,datetime.datetime.now()]
cursor.execute("INSERT INTO final2 VALUES(:1,:2,:3,:4)",row)
【问题讨论】:
-
更简单的方法是不来回移动数据,直接执行
insert into ... select ... -
我同意应该避免从 DB 到 Python 的往返往返。考虑使用上面的语句(也在答案中)。尝试使用 UNION 一次查询多个表。或者将语句嵌入到 PL/SQL 块中。如果您必须使用 Python,则为查询/查询调整
prefetchrowsandarraysize,并使用executeMany()进行插入。这些可以大大提高性能。
标签: python python-3.x database oracle oracle-sqldeveloper