У меня много проблем с изучением внешних ключей и отношений в SQLAlchemy. У меня в базе данных две таблицы. Первый - Request
, а второй - Agent
. Каждый Request
содержит один Agent
, а каждый Agent
- один Request
.
class Request(db.Model):
__tablename__ = 'request'
reference = db.Column(db.String(10), primary_key=True)
applicationdate = db.Column(db.DateTime)
agent = db.ForeignKey('request.agent'),
class Agent(db.Model):
__tablename__ = 'agent'
id = db.relationship('Agent', backref='request', \
lazy='select')
name = db.Column(db.String(80))
company = db.Column(db.String(80))
address = db.Column(db.String(180))
Когда я запускаю db.create_all()
, я получаю следующую ошибку
Не удалось инициализировать целевой столбец для ForeignKey «request.agent» в таблице «заявитель»: таблица «запрос» не имеет столбца с именем «агент»
1 ответ
class Request(db.Model):
__tablename__ = 'request'
id = db.Column(db.Integer, primary_key=True)
applicationdate = db.Column(db.DateTime)
class Agent(db.Model):
__tablename__ = 'agent'
id = db.Column(db.Integer, primary_key=True)
request_id = db.Column(db.Integer, db.ForeignKey('request.id'))
request = db.relationship("Request", backref=backref("request", uselist=False))
name = db.Column(db.String(80))
company = db.Column(db.String(80))
address = db.Column(db.String(180))
Теперь вы можете получить доступ к своим моделям следующим образом:
request = Request.query.first()
print(request.agent.name)
agent = Agent.query.first()
print(agent.request.applicationdate)
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.
request_id = db.Column(db.Integer, db.ForeignKey('request.id'))
иrequest = db.relationship("Request", backref=db.backref("request", uselist=False))
, потому что база данных импортируется какdb
.