通过一个查询使用flask将数据插入多个mySQL表

2024-04-23 11:29:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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。在


Tags: toid应用程序inputtitletypemysqlbooks
1条回答
网友
1楼 · 发布于 2024-04-23 11:29:07

经过一番挣扎,结果发现Flask不执行多个查询。所以我把程序改成了两条不同的路线。在

路径1:用author字段填充author表。 然后返回flask自动执行的id值,并将其放入会话中。在

然后路径2:用相同的表单字段和session中的author_id字段填充book表。在

相关问题 更多 >