PostgreSQL没有使用psycopg2在AWS Lambda上用Python插入

时间:2018-05-10 19:06:41

标签: python sql postgresql aws-lambda psycopg2

使用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()

1 个答案:

答案 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提交到数据库中。我之前犯过这个错误,调试很烦人。