Работа с UUID в SQLAlchemy: подробное руководство

“uuid sqlalchemy”

В этой статье блога мы рассмотрим различные методы работы с UUID в SQLAlchemy, популярной библиотеке Python для работы с реляционными базами данных. UUID или универсально уникальные идентификаторы обычно используются в качестве первичных ключей или уникальных идентификаторов в таблицах базы данных. Мы продемонстрируем, как генерировать UUID, хранить их в базе данных, запрашивать записи на основе UUID и выполнять другие распространенные операции с помощью SQLAlchemy. Давайте погрузимся!

  1. Генерация UUID:
    Чтобы генерировать UUID в Python, мы можем использовать модуль uuid. Вот пример создания UUID:
import uuid
new_uuid = uuid.uuid4()
print(new_uuid)
  1. Объявление столбцов UUID в SQLAlchemy:
    Чтобы хранить UUID в таблице базы данных с помощью SQLAlchemy, нам необходимо объявить столбцы UUID в схеме таблицы. Это можно сделать, используя тип sqlalchemy.dialects.postgresql.UUIDдля PostgreSQL или тип sqlalchemy.types.Stringдля других баз данных. Вот пример:
from sqlalchemy import Column
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class MyTable(Base):
    __tablename__ = 'my_table'
    id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
    # other columns...
  1. Вставка записей с UUID:
    При вставке записей в таблицу мы можем назначить UUID соответствующему столбцу. Вот пример:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine('postgresql://username:password@localhost:5432/mydatabase')
Session = sessionmaker(bind=engine)
session = Session()
new_record = MyTable(id=uuid.uuid4(), name='Example')
session.add(new_record)
session.commit()
  1. Запрос записей по UUID:
    Чтобы запросить записи на основе UUID, мы можем использовать оператор ==в предложении фильтра SQLAlchemy. Вот пример:
result = session.query(MyTable).filter(MyTable.id == uuid.UUID('your-uuid-here')).first()
if result:
    print(result.name)
  1. Обновление записей с помощью UUID:
    При обновлении записей с помощью UUID используется аналогичный подход к вставке записей. Мы можем получить запись с помощью запроса, изменить столбец UUID и зафиксировать изменения. Вот пример:
record = session.query(MyTable).filter(MyTable.id == uuid.UUID('your-uuid-here')).first()
if record:
    record.id = uuid.uuid4()
    session.commit()

Это всего лишь несколько методов работы с UUID в SQLAlchemy. В зависимости от вашего конкретного варианта использования вам может потребоваться дополнительная настройка этих примеров. Не забудьте обратиться к документации SQLAlchemy для получения более подробной информации о работе с UUID.