2015-03-25 109 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)