使用psycopg2在AWS Lambda中通过Python访问的PostgreSQL。
这个功能:
cur.execute("INSERT INTO table (column1, column2, column3) VALUES ('test1', 'test2', 'test3');")
不向数据库添加任何行。 Psycopg2不会抛出错误。 PostgreSQL记录语句没有错误。然而!第四列是自动递增的id。用于跟踪id的序列增加1,即使没有添加行。 (已经很奇怪)
如果以任何其他方式(命令行,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()
答案 0 :(得分:1)
好像你没有做commit
而没有保存你的代码,所以我建议这样做:
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
conn = db()
cur = conn.cursor()
cur.execute("INSERT INTO table (column1, column2, column3) VALUES ('test1', 'test2', 'test3');")
conn.commit()
请注意conn.commit()
,因为需要将insert
提交到数据库中。我之前犯过这个错误,调试很烦人。