尝试通过SQL-Alchemy执行select查询时,出现以下错误:
ArgumentError: Object <hello.models.User object at 0x106763210> is not legal as a SQL literal value
models.py
Base = declarative_base()
Base.query = db_session.query_property()
@login_manager.user_loader
def get_user(uid):
user = User.query.filter_by(id=uid).first()
return user
#Where code error ocurrs
class User(Base, UserMixin):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(120))
email = db.Column(db.String(120), unique=True)
company = db.Column(db.String(120))
password = db.Column(db.String(90))
admin = db.Column(db.Boolean, nullable=False, default=False)
发布于 2018-10-20 13:55:30
在我的例子中,我执行了一个查询,它有一个对象,而不是一个特定值。这就是我得到这个错误的原因。
user=Users.query.filter_by(id=someid).first()#this was not a problem,
但第二个查询如下所示
friends=Friends.query.filter_by(user).first()#this is where i got ht problem
说flask-sqlalchemy-argumenterror-object-is-not-legal-as-a-sql-literal-value.
这意味着,
我正在尝试执行一个查询,它有一个对象
,而不是user.id(或类似的东西,应该是一个值)
因此,当我意识到这一点时,我将查询更改为
Friends=Friends.query.filter_by(user.id).first()#worked fine
发布于 2018-06-01 04:01:02
在这里你必须找到一些关于你的问题的信息:link
类型系统现在有了特定的检查,用于在上下文中传递SQLAlchemy“SQLAlchemy”对象,否则这些对象将被作为文字值处理。
我在这里也遇到了同样的问题:
def increase_relation(cls, previous, current):
current = DBSession.query(cls).filter_by(left_sound_id=previous, right_sound_id=current).first()
rate = int((100 - current.weight) - (100 - current.weight) / 1.618)
DBSession.query(cls).\
filter(cls.left_sound_id==previous).\
filter(cls.right_sound_id==current).\ # error is here
update({"weight": cls.weight + rate})
如您所见,我将"current“作为参数,并将其覆盖到下一行,这是错误的。我是这样解决的:
def increase_relation(cls, previous_id, current_id):
current_rel = DBSession.query(cls).filter_by(left_sound_id=previous_id, right_sound_id=current_id).first()
rate = int((100 - current_rel.weight) - (100 - current_rel.weight) / 1.618)
DBSession.query(cls).\
filter(cls.left_sound_id==previous_id).\
filter(cls.right_sound_id==current_id).\
update({"weight": cls.weight + rate})
检查你的"uid",它的类型是否正确?
https://stackoverflow.com/questions/49723956
复制相似问题