Как заполнить sql таблицу на Python SQLAlchemy? Добавляю данные, но в БД они не появляются

Подскажите что я делаю не так. Как заполнить sql таблицу на Python SQLAlchemy? Добавляю данные, но в БД они не появляются. Ошибок никаких нет, запускаю код добавления values_to_insert он отрабатывает, а данных не появляется.

Создаю

import sqlalchemy as db

engine = db.create_engine('sqlite:///my_account_statement.db')

conn = engine.connect()
metadata = db.MetaData()

payment = db.Table('Payment', metadata,
                   db.Column('id', db.Integer, primary_key=True),
                   db.Column('name', db.Text),
                   db.Column('date', db.Text),
                   db.Column('time', db.Text),
                   db.Column('amount', db.Text),
                   db.Column('account_number', db.Text),
                  )


payment.create(engine)
conn.close()

Добавляю:

import sqlalchemy as db

engine = db.create_engine('sqlite:///my_account_statement.db')

conn = engine.connect()
metadata = db.MetaData()
payment = db.Table('Payment', metadata, autoload_with=engine)


values_to_insert = [
    {'name': 'Быков Василий Геннадьевич', 'date': '2018-06-15', 'time': '15:39:08.885+03:00', 'amount': '1000.00', 'account_number': '144945576'},
    {'name': 'Курёзин Петр Михайлович', 'date': '2018-06-15', 'time': '12:39:08.885+03:00', 'amount': '2000.00', 'account_number': '144942346'}
]


insertion_query = payment.insert().values(values_to_insert)

conn.execute(insertion_query)

Ответы (2 шт):

Автор решения: Danila Kartovitskii

Используйте .execute() с параметрами values() для каждой строки. Метод values() ожидает передачи значений одной записи, а вы передаете список.

with engine.connect() as conn:
    for value in values_to_insert:
        insertion_query = payment.insert().values(**value)
        conn.execute(insertion_query)
→ Ссылка
Автор решения: Oopss

Код рабочий, не хватило одной строчки, внесения в базу данных, conn.commit()

import sqlalchemy as db

engine = db.create_engine('sqlite:///my_account_statement.db')

conn = engine.connect()
metadata = db.MetaData()

payment = db.Table('Payment', metadata,
                   db.Column('id', db.Integer, primary_key=True),
                   db.Column('name', db.Text),
                   db.Column('date', db.Text),
                   db.Column('time', db.Text),
                   db.Column('amount', db.Text),
                   db.Column('account_number', db.Text),
                  )


payment.create(engine)
conn.close()

engine = db.create_engine('sqlite:///my_account_statement.db')
conn = engine.connect()
metadata = db.MetaData()
payment = db.Table('Payment', metadata, autoload_with=engine)

values_to_insert = [
    {'name': 'Быков Василий Геннадьевич', 'date': '2018-06-15', 'time': '15:39:08.885+03:00', 'amount': '1000.00', 'account_number': '144945576'},
    {'name': 'Курёзин Петр Михайлович', 'date': '2018-06-15', 'time': '12:39:08.885+03:00', 'amount': '2000.00', 'account_number': '144942346'}
]

insertion_query = payment.insert().values(values_to_insert)

conn.execute(insertion_query)
conn.commit()

result=conn.execute(db.select(payment)).fetchall()
print(result)
conn.close()

[(1, 'Быков Василий Геннадьевич', '2018-06-15', '15:39:08.885+03:00', '1000.00', '144945576'), (2, 'Курёзин Петр Михайлович', '2018-06-15', '12:39:08.885+03:00', '2000.00', '144942346')]
→ Ссылка