我打算用python向一個在Oracle中的表插入資料。它沒有給我任何錯誤,但在Oracle SQL Developer中也沒有向我的表中插入任何東西。我還寫了一個查詢,在Python環境中獲得選擇rom我的表,它給了我輸出。
我的CREATE TABLE代碼:
cursor = conn.cursor()
cursor.execute("CREATE TABLE INSERT_TEST(FISRT_COLUMN VARCHAR2(30),SECOND_COLUMN NUMBER(10,2))" )
我的INSERT代碼:
cursor = conn.cursor()
data = [
('Mina', 20) 。
('Minoo', 32) 。
('Sara', 22)。
('Ehssan', 25)。
('Ladan', 55)
]
for row in data:
cursor.execute(""
insert into INSERT_TEST (FISRT_COLUMN, SECOND_COLUMN)
values (:1, :2)"", row)
我的SELECT查詢:
re = cursor.execute("select * from INSERT_TEST")
for row in re:
print(row)
我在Python環境下的輸出:
('Mina', 20.0) ('Minoo', 32.0) ('Sara', 22.0) ('Ehssan', 25.0) ('Ladan', 55.0)
我在Oracle SQL Developer中的輸出是空的!
uj5u.com熱心網友回復:
我知道這取決于oracle SQL developer中的表,在我的代碼的最后,我必須寫下cursor.execute('commit')以顯示它結束并將所有的資料插入我的表中。
uj5u.com熱心網友回復:
我認為你需要在你的程式末尾加上conn.commit()。commit屬于connection類,而不是cursor。
uj5u.com熱心網友回復:
檢查你的資料庫驅動程式的檔案。
- 對于一些資料庫驅動程式,默認的行為是在你關閉事務和連接時
COMMIT任何未提交的資料;所以,確保你在完成后關閉連接。 - 對于其他資料庫驅動程式,默認行為是在您關閉事務和連接時
ROLLBACK任何未提交的資料;在這種情況下,您將需要在關閉連接之前明確地COMMIT資料,否則它將ROLLBACK您的更改。
Oracle 資料庫不允許其他會話 (甚至屬于同一個用戶) 看到未提交的資料,所以,如果你從 Python INSERT 但沒有 COMMIT (無論是顯式的還是,如果驅動程式支持它,在你關閉連接時隱式的),那么你將能夠從創建資料的 Python 會話中看到它,但當你在另一個會話中查看它時 (即從 SQL Developer) 它將被隱藏。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/324981.html
標籤:
