2015-03-25 3 views
1

Я пытаюсь создать функцию для подключения к базе данных в python. Но теперь это работает. Вот мой код для определения.python Database Connection в функции

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] 

Я возвращаю conn и cur каждый раз, когда вызываю функцию соединения. так вот мой код, когда РМКО вызов функции

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

, когда я запускаю это не происходит никакой ошибки, но когда я проверить базу данных, нет вставленной строки. пожалуйста помоги. Спасибо

ответ

1

Каждый раз, когда вы вызываете функцию подключения, вы создаете новое соединение с сервером базы данных. Итак, ваш первый вызов выполняет запрос. Второй звонок дает вам . Вы совершаете это новое соединение, но никаких изменений не было. Попробуйте это вместо этого:

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

0

используя sqlalchemy, вы также можете подключить базу данных к python. Вот код

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