PostgreSQL не вставляется в Python на AWS Lambda с psycopg2 - PullRequest
0 голосов
/ 10 мая 2018

PostgreSQL используется Python в AWS Lambda с помощью psycopg2.
Эта функция:

cur.execute("INSERT INTO table (column1, column2, column3) VALUES ('test1', 'test2', 'test3');")

Не добавляет ни одной строки в базу данных.Psycopg2 не выдает ошибку.PostgreSQL регистрирует оператор без ошибок.ТЕМ НЕ МЕНИЕ!Существует четвертый столбец, который представляет собой автоматически увеличивающийся идентификатор.Последовательность, используемая для отслеживания идентификатора, увеличивается на единицу, хотя строка не добавляется.(Уже странно)

Если тот же оператор отправляется любым другим способом (командная строка, 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 голосов
/ 10 мая 2018

Похоже, вы не делаете 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в базу данных.Я сделал эту ошибку раньше, и отладка была раздражающей.

...