Я учусь sqlalchemy
с помощью Python, и я пытаюсь настроить базу данных postgres, которая отображает структуру классов, которая есть в моем коде.
Конкретно, у меня есть следующие два классы, представляющие пользователя и элемент:
class Item(Base):
__tablename__ = 'item'
item_uuid = Column(UUID(as_uuid=True), primary_key=True)
name = Column(String)
def __init__(self, name):
self.item_uuid = uuid.uuid1()
self.name = name
class User(Base):
__tablename__ = 'users'
user_uuid = Column(UUID(as_uuid=True), primary_key=True)
name = Column(Integer)
def __init__(self, name):
self.user_uuid = uuid.uuid1()
self.name = = name
Эти классы правильно сопоставлены с двумя таблицами в моей базе данных (соответственно users
и items
), которые я создал следующим образом:
CREATE TABLE users (
user_uuid uuid PRIMARY KEY,
name VARCHAR
)
CREATE TABLE items (
item_uuid uuid PRIMARY KEY,
name VARCHAR
)
Теперь я хочу создать третий класс, называемый взаимодействием, свойства которого представляют собой один объект типа User
и один объект типа Item
, что-то вроде:
class Interaction():
def __init__(self, user, item):
self.user = user
self.item = item
Я хотел бы также храните записи этого класса в моей базе данных в таблице с именем interactions
таким образом, чтобы при запросе к этой таблице с помощью sqlalchemy
я непосредственно получал экземпляры этого класса.
Что-то такое, что если я do
interaction = session.query(Interaction).one()
Я получаю объект interaction
такой, что interaction.user
является экземпляром класса User
, а interaction.item
является экземпляром класса Item
.
Это возможно? Как мне построить таблицу БД и класс Interaction
, чтобы получить это?