gpt4 book ai didi

python - 如何使用 Python 批量插入 Oracle 数据库?

转载 作者:太空狗 更新时间:2023-10-29 17:23:19 25 4
gpt4 key购买 nike

我有一些每月的天气数据要插入到 Oracle 数据库表中,但我想批量插入相应的记录以提高效率。任何人都可以建议我如何在 Python 中执行此操作吗?

例如,假设我的表有四个字段:一个站点 ID、一个日期和两个值字段。这些记录由站点 ID 和日期字段(复合键)唯一标识。我必须为每个站点插入的值将保存在一个列表中,其中包含 X 年的完整数据,因此例如,如果有两年的值,那么值列表将包含 24 个值。

如果我想一次插入一条记录,我假设下面是我执行此操作的方式:

connection_string = "scott/tiger@testdb"
connection = cx_Oracle.Connection(connection_string)
cursor = cx_Oracle.Cursor(connection)
station_id = 'STATION_1'
start_year = 2000

temps = [ 1, 3, 5, 7, 9, 1, 3, 5, 7, 9, 1, 3 ]
precips = [ 2, 4, 6, 8, 2, 4, 6, 8, 2, 4, 6, 8 ]
number_of_years = len(temps) / 12
for i in range(number_of_years):
for j in range(12):
# make a date for the first day of the month
date_value = datetime.date(start_year + i, j + 1, 1)
index = (i * 12) + j
sql_insert = 'insert into my_table (id, date_column, temp, precip) values (%s, %s, %s, %s)', (station_id, date_value, temps[index], precips[index]))
cursor.execute(sql_insert)
connection.commit()

有没有办法做我上面正在做的事情,但以执行批量插入的方式来提高效率?顺便说一句,我的经验是使用 Java/JDBC/Hibernate,所以如果有人可以给出与 Java 方法相比的解释/示例,那么它会特别有帮助。

编辑:也许我需要使用 cursor.executemany() 作为描述 here

提前感谢您的任何建议、意见等

最佳答案

这是我想出的方法,看起来效果很好(但如果有改进的方法,请发表评论):

# build rows for each date and add to a list of rows we'll use to insert as a batch 
rows = []
numberOfYears = endYear - startYear + 1
for i in range(numberOfYears):
for j in range(12):
# make a date for the first day of the month
dateValue = datetime.date(startYear + i, j + 1, 1)
index = (i * 12) + j
row = (stationId, dateValue, temps[index], precips[index])
rows.append(row)

# insert all of the rows as a batch and commit
ip = '192.1.2.3'
port = 1521
SID = 'my_sid'
dsn = cx_Oracle.makedsn(ip, port, SID)
connection = cx_Oracle.connect('username', 'password', dsn)
cursor = cx_Oracle.Cursor(connection)
cursor.prepare('insert into ' + database_table_name + ' (id, record_date, temp, precip) values (:1, :2, :3, :4)')
cursor.executemany(None, rows)
connection.commit()
cursor.close()
connection.close()

关于python - 如何使用 Python 批量插入 Oracle 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14904033/

25 4 0
文章推荐: angular2 从 `