python - 如何获取新插入的数据行和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 的事情吗?
解决方案
您可能需要考虑使用Flask-SQLAlchemy包来帮助您解决此问题。
尽管语法与 Perl 略有不同,但您可以做的是,当您创建模型对象时,可以将其设置为变量。然后,当您在数据库会话上刷新或提交时,您可以在您创建的模型对象上提取主键属性(无论是“id”还是其他),并根据需要使用它。
SQLAlchemy 支持 MySQL 以及其他几个关系数据库。此外,只要您使用模型对象并将它们添加/删除到您的数据库会话中,它就能够帮助防止 SQL 注入攻击,而不是直接的 SQL 命令。
推荐阅读
- node.js - 抛出新的 mongoose.Error.MissingSchemaError(name); MissingSchemaError:尚未为模型“Comapign”注册架构
- django - 如何在 Django 表单中使用 BaseInlineFormSet?
- python - 如何在 wx 框架中将 matplotlib 画布与 wx 面板对齐
- python-3.x - ipython 2.7.15+ -> 3.x
- python - 是否有一个简单的列表表达式可以获取列表中项目的索引但不获取列表中项目的值?
- jquery - 如何从具有相同名称的数组的不同索引索引的多个元素中获取单击的元素
- mongodb - Doctrine ODM - 提供的更新字段
- amazon-web-services - 从 Alexa Skill Lambda 调用 DynamoDB 时出现 CORS 错误
- html - 如何在屏幕调整大小(不滚动)时使导航栏从透明变为实心
- mysql - 如何在 phpmyadmin 上启用事件调度程序