【问题标题】:PostgreSQL not INSERTing in Python on AWS Lambda with psycopg2PostgreSQL 不使用 psycopg2 在 AWS Lambda 上插入 Python
【发布时间】: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


【解决方案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 提交到数据库中。我以前犯过这个错误,调试起来很烦人。

【讨论】:

  • 谢谢,工作。我以为你应该做 cur.commit(),但它是 conn.commit()。
  • 是的,当您没有看到文档时,这有点令人困惑。之前也弄错了!干杯
  • 您还应该关闭光标(如果您不需要保持连接打开,则关闭连接)。一般来说,它应该去connect()cursor()execute()commit()cursor.close()connection.close()
猜你喜欢
  • 2021-06-13
  • 2011-05-06
  • 1970-01-01
  • 2020-05-14
  • 1970-01-01
  • 2021-01-06
  • 1970-01-01
  • 2023-03-21
  • 2015-06-10
相关资源
最近更新 更多