我有下面的代码,直到今天为止,基本上我正在传递一堆要使用 python 插入数据库的列表。下面的代码之前的前几行从 pd 数据帧中获取列,然后将所有内容切换到列表。 然后在下面的代码中将它们插入数据库。 但现在花了很长时间仍然没有结果。我今天做了一些调整,但没有什么使代码无法工作。有时我会看到按钮上有一个标签,上面写着“cx_oracle.databaseerror 除外”,但它仍在运行代码。
try:
# Establish a connection
cursor = connection.cursor()
query = """
INSERT INTO int_Stg.UnitScheduleOfferHourly
(HOUR, UNITSCHEDULEID, VERSIONID, MINRUNTIME,NOTIFICATIONTIME, NOLOADCOST, COLDSTARTUPCOST, INTERSTARTUPCOST, HOTSTARTUPCOST, DELETED,VALIDTOTIME, VALIDFROMTIME)
VALUES (
TO_DATE(:1, 'dd-mon-yyyy HH24:MI:SS'),
:2,
2,
:3,
:4,
:5,
:6,
:7,
:8,
:9,
TO_TIMESTAMP('31-DEC-9999 05.00.00.000000000','DD-Mon-RR HH24:MI:SS.FF'),
TO_TIMESTAMP('01-JAN-1900 00.00.00.000000000', 'DD-Mon-RR HH24:MI:SS.FF')
)"""
# Sample data to be inserted (replace with your actual data)
data = [(str(hour[i]),unitscheduleid[i], minruntime[i],notificationtime[i],noloadcost[i], coldstartupcost[i], interstartupcost[i], hoststartupcost[i],
deleted[i]) for i in range(len(hour))]
# Execute the query
cursor.executemany(query, data)
# Commit the transaction
connection.commit()
print("Data inserted successfully.")
except cx_Oracle.DatabaseError as exc:
error, = exc.args
print("Oracle-Error-Code:", error.code)
print("Oracle-Error-Message:", error.message)
我有下面的代码,直到今天为止,基本上我正在传递一堆要使用 python 插入数据库的列表。下面代码之前的前几行从 pd 数据帧中获取列,然后将所有列切换到列表。然后在下面的代码中将它们插入数据库。但现在花了很长时间仍然没有结果。我今天做了一些调整,但没有什么使代码无法工作。
您尝试修改的行可能已被早期会话(可能是 SQL Developer)锁定,但第一个会话尚未发出
UPDATE
或 COMMIT
,因此该行被锁定,第二个会话被锁定等待锁被释放。尝试运行 Python 代码,如果代码“永远”等待,则转到打开第一个会话的应用程序(可能是 SQL Developer 或仍在运行的另一个 Python 实例)并运行 ROLLBACK
(或
COMMIT
)在第一个会话中运行命令,然后查看 Python 代码是否突然完成。如果是,那么它正在等待该行上的锁被释放。如果您不知道哪个会话锁定了该行,那么您可以尝试关闭其他所有内容,当连接关闭时,数据将隐式ROLLBACK
任何更改。如果这仍然不起作用,那么您可以尝试
终止连接到数据库的所有非活动会话(首先询问您的同事,这样您就不会杀死某人正在积极使用的东西)。