正如评论中所讨论的,这是解决方案,因此对其他人有帮助:您需要定义一个会话并将其传递给 load 函数,如下所示:from sqlalchemy import engine #thanks to your commentfrom sqlalchemy.orm import scoped_session, sessionmakerclass UserRegister(Resource): @classmethod def post(cls): # the 'load' function in marshmallow will use the data to create usermodel object sess = scoped_session(sessionmaker(bind=engine)) user = user_schema.load(request.get_json(), sess)
2 回答
守着一只汪
TA贡献1872条经验 获得超3个赞
您必须重命名函数参数以不与类属性的名称冲突:
def test_factory(b):
class Test:
a = b
return Test
>>> t1 = test_factory(1)
>>> t2 = test_factory(2)
>>> print(t1.a, t2.a)
1 2
蝴蝶不菲
TA贡献1810条经验 获得超4个赞
解析class语句时,赋值将a其定义为临时类命名空间的一部分,类似于函数定义中对局部变量的赋值。因此,该名称a会在封闭函数范围内隐藏参数的名称。
您可以更改参数名称(如schwobaseggl所示)
def test_factory(a_value):
class Test:
a = a_value
return Test
或者在定义之后设置属性:
def test_factory(a):
class Test:
pass
Test.a = a
return Test
或type直接致电:
def test_factory(a):
return type('Test', (), {'a': a})
添加回答
举报
0/150
提交
取消