2015-03-25 37 views
1

我嘗試在python中爲數據庫連接創建一個函數。但現在這個工作。 這是我的定義代碼。python數據庫連接函數

def connect(): 
    dsn = cx_Oracle.makedsn(host='MYHOST', sid='DEVPRON', port=1521) 
    conn = cx_Oracle.connect(user='root', password='***', dsn=dsn) 
    cur = conn.cursor() 
    return [cur,conn] 

我每次調用connect函數都會返回conn和cur。 所以這裏是我的代碼當IAM調用函數

connect()[0].execute("insert into tbluser (fullname,nickname) values ('" + fname + "', '" + nname + "') ") 
connect()[1].commit() 

當我運行這個沒有錯誤發生,但是當我檢查數據庫,沒有插排。請幫忙。謝謝

回答

1

每次調用connect函數時,都會創建一個到數據庫服務器的新連接。所以,你的第一個調用執行一個查詢。第二個電話會給你一個新的連接。你正在使用這個新的連接,但沒有改變。試試這個:

def connect(): 
    dsn = cx_Oracle.makedsn(host='MYHOST', sid='DEVPRON', port=1521) 
    conn = cx_Oracle.connect(user='root', password='***', dsn=dsn) 
    cur = conn.cursor() 
    return cur, conn 

cur, conn = connect() 
cur.execute("insert into tbluser (fullname,nickname) values ('" + fname + "', '" + nname + "') ") 
conn.commit() 
+0

你真棒..謝謝:) – Kyrie 2015-03-25 02:09:03

0

使用sqlalchemy也可以連接數據庫從python。這裏是代碼

from sqlalchemy import create_engine 
engine = create_engine('oracle://host:port/database', echo=True) 
conn = engine.connect() 
result = conn.execute(query)