SQLAlchemy Core — это мощный инструмент для работы с реляционными базами данных. Он предоставляет гибкое API для выполнения различных операций с данными, и в этой статье мы подробно рассмотрим процесс вставки данных.
Для начала необходимо иметь определенную таблицу, в которую вы хотите вставить данные. Допустим, у нас есть следующая таблица:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
engine = create_engine('sqlite:///mydatabase.db')
metadata = MetaData()
users = Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(50)),
Column('age', Integer)
)
Для вставки одной записи используется метод insert()
:
insert_stmt = users.insert().values(id=1, name='Alex', age=25)
conn = engine.connect()
result = conn.execute(insert_stmt)
Если у вас есть множество записей для вставки, можно использовать тот же метод insert()
, передав список словарей:
data = [
{"id": 2, "name": "John", "age": 30},
{"id": 3, "name": "Marie", "age": 28},
{"id": 4, "name": "Mike", "age": 35}
]
result = conn.execute(users.insert(), data)
В некоторых базах данных (например, PostgreSQL) вы можете получить возвращаемые значения после операции вставки:
insert_stmt = users.insert().values(name="Jack", age=40).returning(users.c.id, users.c.name)
result = conn.execute(insert_stmt)
for row in result:
print(row.id, row.name)
При больших объемах данных пакетная вставка может значительно ускорить процесс:
big_data = [{"name": f"user_{i}", "age": i} for i in range(1000)]
conn.execute(users.insert(), big_data)
Если вы используете столбец с автоинкрементом (например, id
в нашем примере), не обязательно указывать значение этого столбца при вставке:
insert_stmt = users.insert().values(name="Emma", age=29)
result = conn.execute(insert_stmt)
В этом случае значение id
будет автоматически генерироваться базой данных.
Важно учитывать возможные ошибки при вставке данных, особенно когда речь идет о нарушении ограничений базы данных:
try:
result = conn.execute(users.insert().values(name="Robert", age=-10))
except Exception as e:
print(f"Error occurred: {e}")
SQLAlchemy Core предоставляет обширный и гибкий функционал для вставки данных в базу данных. Будь то вставка одной записи или пакетная вставка большого количества данных, SQLAlchemy обеспечивает эффективную и удобную работу с данными.
В следующих статьях мы рассмотрим другие операции с данными в SQLAlchemy Core, такие как обновление, удаление и выборка.
Содержание: