我在mySQL中有两个不同的表:
'Books' ('id', 'title', 'author_id')
以及
'Authors' ('id', 'author')
两个id都是自动递增的,表与Books
上的外键('author_id')
有一对多的关系。我的任务是一下子输入一个新的作者和一本书,因为数据是通过POST方法从HTML中的同一个表单传入这些表的。在
我在mySQL上手动尝试过,效果很好:
INSERT INTO authors (author, created_at, updated_at)
VALUES ('Gerald Durrell',NOW(),NOW());
INSERT INTO books (title, rating, created_at, updated_at, author_id)
VALUES ('Birds',5, NOW(),NOW(), LAST_INSERT_ID())
在我的Flask应用程序中,我有完全相同的查询,但系统变得疯狂,不允许我这样做。在
我的模型.py在
^{pr2}$我的html:
<form action='/addbook' method='POST'>
<label for='title'>Book Title:</label>
<input type="text" name='title'>
<p>Enter new author:</p>
<input name='author' type="text">
<input type='submit' value='Click to add book'>
</form>
当我在mySQL中输入这个命令时,它是手动工作的。但它在烧瓶里摔碎了。我知道mySQL和Flask应用程序之间的连接很好,因为我成功地输入了导航到这个“添加图书页面”的用户。 这是我的终端中弹出的确切错误消息:
Something went wrong (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO books (title, rating, created_at, updated_at, author_id) VAL' at line 1")
解决方法是将author合并到book表中,但是这样我就无法在应用程序的不同部分遍历authors。在
经过一番挣扎,结果发现Flask不执行多个查询。所以我把程序改成了两条不同的路线。在
路径1:用author字段填充author表。 然后返回flask自动执行的id值,并将其放入会话中。在
然后路径2:用相同的表单字段和session中的author_id字段填充book表。在
相关问题 更多 >
编程相关推荐