У меня есть приложение на Python, и я использую sqlalchemy и posgreSQL.У меня уже есть некоторые данные в БД, и я не хочу их воссоздавать, поэтому я хочу добавить таблицу в БД и сохранить все данные (ранее я для этого использовал alembic, но на этот раз я хочу использовать сырой SQL).
Это моя новая таблица, которую я хочу добавить в БД на python:
# User payed data
class UserPayData(Base):
__tablename__ = 'userspaydata'
id = Column(Integer, primary_key=True)
account_owner = Column(Text, nullable=False)
IBAN = Column(Text, nullable=False)
# Foreign Keys
belongs_to_user_id = Column(Integer, ForeignKey('users.id'))
payment_belongs_to_user_relation = relationship("User", back_populates="payment_belongs_to_user_addresses")
def __init__(self, account_owner=None, IBAN=None):
self.account_owner = account_owner
self.IBAN = IBAN
def get(self, id):
if self.id == id:
return self
else:
return None
def __repr__(self):
return '<%s(%r, %r, %r)>' % (self.__class__.__name__, self.id, self.account_owner, self.IBAN)
Вот соответствующая часть из таблицы users
:
# Project
class User(UserMixin, Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
# etc...
# Foreign Key payment
payment_belongs_to_user_addresses = relationship('UserPayData', back_populates="payment_belongs_to_user_relation")
Это необработанный SQL, который я хочу выполнить:
CREATE TABLE 'userspaydata'
(
account_owner TEXT NOT NULL,
IBAN TEXT NOT NULL,
belongs_to_user_id INT references users(id)
);
Я нашел много примеров, и некоторые из них отличаются.
У меня есть несколько вопросов:
Нужно ли создавать первичный ключ?AFAIK, если первичный ключ не определен мной, он будет автоматически ID INT
Отношения не нужно определять на уровне БД, они определяются на уровне приложения, или я ошибаюсь?Если я ошибаюсь, как определить отношение в сыром SQL?
Я еще не отправил запрос SQL, правильный ли синтаксис?