您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

flask中的sqlalchemy.orm.exc.UnmappedInstanceError

flask中的sqlalchemy.orm.exc.UnmappedInstanceError

q = request.form['name']
# do for 12 more fields
db.session.add(q)

request.form['name']将返回一个unicode值。那你就…

db.session.add(q)

会话的目标是跟踪实体(Python对象),而不是你似乎想这样做的单个unicode值。因此,你应该添加具有映射关系的User对象(例如ORM教程的“映射”部分中显示的对象),但实际上是在传递简单的unicode值

你所使用的只是sqlAlchemy的一部分:ORM(对象关系映射器)。ORM将尝试做一些事情,例如允许你创建一个新的python对象,并通过将对象“添加”到会话中来自动生成sql

a = MyEntity()
session.add(a)
session.commit() # Generates sql to do an insert for the table that MyEntity is for

请记住,你可以在不使用ORM功能的情况下使用sqlAlchemy。你只db.execute('INSERT...', val1, val2)需要替换已经“裸”的sqlsqlAlchemy将为你提供连接池等(尽管如果你使用的是sqlite,则可能不关心连接池)。

如果你想了解Flask-sqlAlchemy,我首先建议你通过使用简单的脚本(如教程中所示)尝试一下sqlAlchemy的工作原理(尤其是ORM方面),然后你将了解Flask-sqlAlchemy的工作原理。 。

当你将非模型对象添加到会话中时,你将获得UnmappedInstanceError

在你的情况下,q可能是unicode字符串,而不是模型对象。(看来你使用的是Python 2.x,因为在Python 3.x中,它将显示为str),这是导致以下问题的根本原因UnmappedInstanceError: Class '__builtin__.unicode' is not mapped:

  File "C:\Users\Me\repos\mandj2\app\views.py", line 170, in add_manentry
  db.session.add(q)
Python 2022/1/1 18:24:38 有171人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶