【发布时间】:2020-08-02 08:40:33
【问题描述】:
错误提到违反了外键约束。
我的错误: sqlalchemy.exc.IntegrityError:(psycopg2.errors.ForeignKeyViolation)在表“reviews”上插入或更新违反了外键约束“reviews_book_id_fkey” 详细信息:表“评论”中不存在键 (book_id)=(770)。
我的查询:
db.execute("INSERT INTO reviews (comment, score, user_id, book_id) VALUES (:comment, :score, :user_id, :book_id)", {"comment":comment, "score": score, "user_id": user.id, "book_id": book_id})
db.commit()
我的桌子:
更新:“书”表中的书确实存在!
如果问题可能出在填充过程中, 这是一段关于我如何填充“书籍”表的代码:
f = open("books.csv")
reader = csv.reader(f)
for isbn, title, author, year in reader:
if year != 'year':
db.execute("INSERT INTO books (isbn, title, author, year) VALUES (:isbn, :title, :author, :year)", {"isbn": isbn, "title": title, "author": author, "year": year})
db.commit()
更新 #2:这是我的表“books”的快照,ID 是可见的:
【问题讨论】:
-
看起来插入的图书ID无效..您能确认图书ID确实存在
-
图书表中的键是否可见? (book_id)=(770)
-
我已经尝试了几本不同的书,没关系它会显示完全相同的信息,它们都存在于 books 表中。这就是我在我的数据库中插入书籍的方式:f = open("books.csv") reader = csv.reader(f) for isbn, title, author, year in reader: if year != 'year': db.执行(“插入书籍(isbn,标题,作者,年份)值(:isbn,:title,:author,:year)”,{“isbn”:isbn,“title”:title,“author”:作者, “年”:年}) db.commit()
-
@davidev 可见是什么意思?我用一段代码更新了这个问题,如果你还没有看到它,我是如何填充书籍表的,谢谢你花时间和我一起编码!!
标签: sql postgresql flask sqlalchemy flask-sqlalchemy