首页 > 解决方案 > 如何获取新插入的数据行和flask-mysqldb的数据对象?

问题描述

我在 Perl 中工作,我可以通过将结果传递回变量来获取新创建的数据对象 ID。例如:

my $data_obj = $schema->resultset('PersonTable')->create(\%psw_rec_hash);

其中 $data_obj 包含主键的列值。

我希望能够使用 Python 3.7、Flask 和 flask-mysqldb 做同样的事情,但不必再做一次查询。我希望能够将特定记录的主键列值用于另一种方法。

Python 和 flask-mysqldb 像这样插入数据:

query = "INSERT INTO PersonTable (fname, mname, lname) VALUES('Phil','','Vil')
cursor = db.connection.cursor()
cursor.execute(query)
db.connection.commit()
cursor.close()

PersonTable 有一个名为 id 的主键列。因此,新插入的数据行如下所示: 23, 'Phil', 'Vil'

因为在最后插入的数据之前有 22 行数据,我不想对数据执行搜索,因为可能有多个条目具有相同的数据。但是,我只想要最新的数据行。

我可以用 python 3.7 和 flask-mysqldb 做一些类似于 Perl 的事情吗?

标签: pythonpython-3.x

解决方案


您可能需要考虑使用Flask-SQLAlchemy包来帮助您解决此问题。

尽管语法与 Perl 略有不同,但您可以做的是,当您创建模型对象时,可以将其设置为变量。然后,当您在数据库会话上刷新或提交时,您可以在您创建的模型对象上提取主键属性(无论是“id”还是其他),并根据需要使用它。

SQLAlchemy 支持 MySQL 以及其他几个关系数据库。此外,只要您使用模型对象并将它们添加/删除到您的数据库会话中,它就能够帮助防止 SQL 注入攻击,而不是直接的 SQL 命令。


推荐阅读