Как заполнить 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')]