Может кто-нибудь объяснить мне, почему определенный test(). Commit() не работает как varcon.commit()? Все остальное, кажется, работает нормально. (С использованием бродячей VirtualBox из убунта-испытанный-32)Проблема с обязательствами python3 psycopg2 с использованием переменной функции vs для подключения
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import psycopg2
varcon = psycopg2.connect('dbname=tournament')
def test():
try:
psycopg2.connect("dbname=tournament")
except:
print("Connection to Tournament Database Failed")
else:
return psycopg2.connect('dbname=tournament')
def writer():
#db = psycopg2.connect('dbname=tournament')
c =varcon.cursor()
c.execute('select * from players')
data = c.fetchall()
c.execute("insert into players (name) values ('Joe Smith')")
varcon.commit()
varcon.close
print(data)
def writer2():
#db = psycopg2.connect('dbname=tournament')
c =test().cursor()
c.execute('select * from players')
data = c.fetchall()
c.execute("insert into players (name) values ('Joe Smith')")
test().commit()
test().close
print(data)
writer2() #this seem not commited, but database registers the insert by observing the serial promotion
#writer() # this works as expected
Благодарим Вас за очень полезный ответ! Можете ли вы изменить свою вторую ссылку на правильный адрес (http://www.icu-project.org), поскольку project.org - это что-то еще. Ваше предложение сработало. Кроме того, я нашел другой способ, но не уверен, что это хорошая практика: '' 'test(): try: psycopg2.connect ('dbname = tournament') за исключением: print (« Не удалось подключиться к базе данных турнира »,) еще: conn2 = psycopg2.connect ('имя_бд = турнир') conn2.autocommit = True возвращение conn2''' –
в http://stackoverflow.com/questions/11735371/how-to-test-database -connectivity-in-python - это стандартный способ создания и тестирования подключения к базе данных в python.вы можете сделать это, как вы хотите ... –
, пожалуйста, не повышайте, потому что я пытаюсь получить значок невоспетающего героя :) –