python-postgresql,似乎已连接但无响应

时间:2018-12-11 00:40:49

标签: python postgresql psycopg2

我正在用Python(PyCharm)应用SQL命令,但是没有收到任何错误,我没有从数据库得到任何响应。即使故意使用错误的密码仍然没有错误,并且在运行窗口中,我得到“退出代码为0的处理完成”。我应用了两种方法,第一种方法最初可以正常工作。当我使用pgAdmin4时,我可以毫无问题地应用SQL命令。 接下来是两个代码块,它们用于同一方法。第一个版本只工作一次,但是随后我遇到了上面描述的内容。一定不是缺少commit()命令,因为我以我认为正确的方式对连接使用“ with”。那是第一个块,因为在第二个块中,我使用commit()并得到相同的结果。

def save_to_db(self):
    connection = psycopg2.connect(user='postgres', password='valid', database='learning', host='localhost')
    with connection.cursor() as cursor:
        cursor.execute('INSERT INTO users (email, first_name, last_name) VALUES (%s, %s, %s)', (self.email, self.first_name, self.last_name))
    connection.commit()
    connection.close()

第二个(使用commit()代替连接使用“ with”),也没有预期的结果

def save_to_db(self):
    with psycopg2.connect(user='postgres', password='valid', database='learning', host='localhost') as connection:
        with connection.cursor() as cursor:
            cursor.execute('INSERT INTO users (email, first_name, last_name) VALUES (%s, %s, %s)', (self.email, self.first_name, self.last_name))

如果我能理解哪里出了问题,我会很高兴。预先感谢。

编辑: 这是我从中运行方法的脚本:

from user import User    # the class where the methods are
my_user = User('email@email.com', 'first name', 'last name', None)  # in the database there is auto-increment for the primary key (4th argument)
my_user.save_to_db()

0 个答案:

没有答案