【发布时间】:2018-05-10 19:06:40
【问题描述】:
AWS Lambda 中的 Python 使用 psycopg2 访问 PostgreSQL。
这个函数:
cur.execute("INSERT INTO table (column1, column2, column3) VALUES ('test1', 'test2', 'test3');")
不向数据库添加任何行。 Psycopg2 不会引发错误。 PostgreSQL 在没有错误的情况下记录该语句。然而!有第四列,它是一个自动递增的 id。即使未添加行,用于跟踪 id 的序列也会增加一。 (已经很奇怪了)
如果以任何其他方式(命令行、pgAdmin、Adminer)发送相同的语句,它会起作用。
我不知道发生了什么。
编辑:完整代码:
def db():
with open('configEC2.json') as json_data_file:
POSTGRES = json.load(json_data_file)
db = psycopg2.connect( host=POSTGRES["sql"]["host"], user=POSTGRES["sql"]["user"], password=POSTGRES["sql"]["passwd"], dbname=POSTGRES["sql"]["db"] )
return db
def dbSetup():
dbR = db()
cur = dbR.cursor()
return cur
cur = dbSetup()
cur.execute("INSERT INTO table (column1, column2, column3) VALUES ('test1', 'test2', 'test3');")
cur.close()
【问题讨论】:
-
快速提问,查询应该是这样,还是您只是使用示例查询来展示它的工作原理?你也可以显示你的代码的整个部分,一旦你执行查询,你可能会忘记做一个
commit。 -
查询完全一样,只是名称不同。
-
好的,您介意添加代码的后面部分吗?您可能错过了
commit,这可以解释为什么您没有收到错误并且没有创建记录。 -
@HonzaNijaký 我们需要更多的代码,只是那一行没有任何问题,所以我们需要更多的代码来诊断问题。我们应该通过光标的关闭看到连接(减去敏感信息)。
-
正在处理它...
标签: python sql postgresql aws-lambda psycopg2