所以我得到一個錯誤,沒有唯一的約束與我的表之一的給定鍵匹配。我有兩個表:用戶和項目,其中我們有一個多對一的關係(一個用戶的許多項目)。我現在用的燒瓶的SQLAlchemy做這一切:沒有唯一的約束與參考表「用戶」(PostgreSQL)的給定鍵匹配
class ItemModel(db.Model):
__tablename__ = 'items'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(40))
description = db.Column(db.String(80))
price = db.Column(db.Float(precision=2))
emailAddress = db.Column(db.String(40), db.ForeignKey('users.email'))
class UserModel(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer)
email = db.Column(db.String(40), primary_key=True)
name = db.Column(db.String(40))
last_name = db.Column(db.String(40))
items = db.relationship('ItemModel', lazy="dynamic")
創建表,我在「app.py」有這樣的說法:
@app.before_first_request
def create_database():
print("Creating tables.")
db.create_all()
的錯誤是:沒有唯一約束爲引用的表用戶匹配給定的鍵。
因爲我在ItemModel中有一個與UserModel中的主鍵相匹配的外鍵,所以我不確定我要去哪裏出錯。任何建議/提示,歡迎!
謝謝。
你可以修改最後一個代碼'create_database()'的縮進嗎?或者它是如何在你的代碼? –
對不起,我打算通過一個選項卡縮進'def'。我修好了它。 我注意到的一件有趣的事是,當我刪除'UserModel'中的'email'以外的所有內容。它工作得很好,所以我試圖解決這個問題。 – Zain
不使用Flask-SQLAlchemy,但在SQL中,必須首先創建表'users',然後才能使用FK約束創建另一個表並引用它。 –