Python query.filter无法返回完整对象

Python query.filter无法返回完整对象,python,sqlalchemy,Python,Sqlalchemy,我有下面的一小段代码来创建对象曲线。创建新曲线时,它首先通过方法\uuuu new\uuu运行。它检查数据库中是否已经存在此曲线,如果存在,则返回此曲线 在空数据库上创建新曲线时,将按预期返回None。如果它是在名称已经存在的情况下创建的,那么它会抛出一个错误,并声明键错误:“name'(这里的信息并不多…) 有趣的是,如果不返回整个曲线,我们只返回一个属性,例如 x = base.session.query(Curve.name).filter(Curve.name==kw["name"]).

我有下面的一小段代码来创建对象曲线。创建新曲线时,它首先通过方法
\uuuu new\uuu
运行。它检查数据库中是否已经存在此曲线,如果存在,则返回此曲线

在空数据库上创建新曲线时,将按预期返回
None
。如果它是在
名称
已经存在的情况下创建的,那么它会抛出一个错误,并声明
键错误:“name'
(这里的信息并不多…)

有趣的是,如果不返回整个曲线,我们只返回一个属性,例如

x = base.session.query(Curve.name).filter(Curve.name==kw["name"]).first()
然后它工作得很好


有什么想法吗?

你能试着更新你的\uuuuu新方法吗

def __new__(cls, **kw):
    x = base.session.query(Curve).filter(Curve.name==kw["name"]).first()
    if x: return x
    return super(Curve, cls).__new__(**kw)

你能试着将你的\uuuuuuuuu新方法更新为这个吗

def __new__(cls, **kw):
    x = base.session.query(Curve).filter(Curve.name==kw["name"]).first()
    if x: return x
    return super(Curve, cls).__new__(**kw)

谢谢你的评论。我正在Visual Studio中运行代码,在那里python.exe中抛出错误。它仍然在
x=base.session.query(Curve.filter)(Curve.name==kw[“name”])行上显示
keyrerror:“name”
。首先()
必须确保“name”在kw中存在,因此在创建对象时必须显式提供名称。Curve(name='something')谢谢您的评论。我正在Visual Studio中运行代码,在那里python.exe中抛出错误。它仍然在
x=base.session.query(Curve.filter)(Curve.name==kw[“name”])行上显示
keyrerror:“name”
。首先()
必须确保“name”在kw中存在,因此在创建对象时必须显式提供名称。请提供曲线(name='something')完整堆栈跟踪。请提供一个最小、完整且可验证的示例。你如何使用这个课程?是否将参数作为位置参数或关键字参数传递给构造函数?总而言之,
@classmethod
对于这种工作来说是一个更好的工厂。请提供完整的堆栈跟踪。请提供一个最小的、完整的和可验证的示例。你如何使用这个课程?是否将参数作为位置参数或关键字参数传递给构造函数?总而言之,
@classmethod
对于这种工作来说是一个更好的工厂。