使用cs_Oracle插入突然需要很长时间,但在sql Developer中一切正常

问题描述 投票:0回答:1

我有下面的代码,直到今天为止,基本上我正在传递一堆要使用 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 sql oracle pycharm cx-oracle
1个回答
0
投票

我有下面的代码,直到今天为止,基本上我正在传递一堆要使用 python 插入数据库的列表。下面代码之前的前几行从 pd 数据帧中获取列,然后将所有列切换到列表。然后在下面的代码中将它们插入数据库。但现在花了很长时间仍然没有结果。我今天做了一些调整,但没有什么使代码无法工作。

您尝试修改的行可能已被早期会话

UPDATE
锁定,但第一个会话尚未发出
COMMIT
ROLLBACK
,因此该行被锁定,第二个会话正在等待锁定被释放。

尝试运行 Python 代码,如果代码“永远”等待,则转到打开第一个会话的应用程序(可能是 SQL Developer 或仍在运行的另一个 Python 实例)并运行

COMMIT
(或
ROLLBACK
)在第一个会话中运行命令,然后查看 Python 代码是否突然完成。如果是,那么它正在等待该行上的锁被释放。

如果您不知道哪个会话锁定了该行,那么您可以尝试关闭其他所有内容,当连接关闭时,数据将隐式

ROLLBACK
任何更改。如果这仍然不起作用,那么您可以尝试终止连接到数据库的所有非活动会话。

© www.soinside.com 2019 - 2024. All rights reserved.