Python Pony ORM 单行 属性 内部声明式查询
Python Pony ORM one-line property inside declarative queries
我正在尝试在 select 查询中使用单行 属性。应该有可能是因为
0.7.4 & 0.7.5。
+ (inside value_at_end property)
等简单操作有效,但我无法使用 split()
等。关于 0.7.4 和 0.7.5 更新应该是可以的。
class Foo(db.Entity):
_table_ = "sample_table"
some_string_with_value_at_end = Optional(str)
@property
def value_at_end(self):
return self.some_string_with_value_at_end.split('/')[-1]
@classmethod
def get_values_at_end(cls):
values = select(v.value_at_end for v in cls)
return values
items = Foo.get_values_at_end()
for each in items:
print(each)
获取错误:
AttributeError: 'str' object has no attribute 'split': self.some_string_with_value_at_end.split (inside Foo.value_at_end)
现在我正在使用raw_sql,但想制作更多python,应该可以吗?
感谢帮助!
此时 Pony 不知道如何将 str.split
方法调用转换为 SQL。
理论上是可行的,但我们需要了解每个支持的数据库的适当翻译。对于其中一些,结果表达式可能看起来非常复杂,如 this answer
所以我怀疑我们会在不久的将来添加对 str.split
翻译的支持。也许您更容易使用 JSON 列并在其中存储字符串值数组。然后你可以写
class Foo(db.Entity):
str_items = Optional(Json)
@property
def value_at_end(self):
return self.str_items[-1]
@classmethod
def get_values_at_end(cls):
values = select(v.value_at_end for v in cls)
return values
现在使用负索引访问 JSON 数组的最后一项应该在 PostgreSQL 中工作,我认为我们也应该为其他数据库添加它,它看起来比添加容易得多str.split
具有所有可能用例的方法。
我正在尝试在 select 查询中使用单行 属性。应该有可能是因为
0.7.4 & 0.7.5。
+ (inside value_at_end property)
等简单操作有效,但我无法使用 split()
等。关于 0.7.4 和 0.7.5 更新应该是可以的。
class Foo(db.Entity):
_table_ = "sample_table"
some_string_with_value_at_end = Optional(str)
@property
def value_at_end(self):
return self.some_string_with_value_at_end.split('/')[-1]
@classmethod
def get_values_at_end(cls):
values = select(v.value_at_end for v in cls)
return values
items = Foo.get_values_at_end()
for each in items:
print(each)
获取错误:
AttributeError: 'str' object has no attribute 'split': self.some_string_with_value_at_end.split (inside Foo.value_at_end)
现在我正在使用raw_sql,但想制作更多python,应该可以吗?
感谢帮助!
此时 Pony 不知道如何将 str.split
方法调用转换为 SQL。
理论上是可行的,但我们需要了解每个支持的数据库的适当翻译。对于其中一些,结果表达式可能看起来非常复杂,如 this answer
所以我怀疑我们会在不久的将来添加对 str.split
翻译的支持。也许您更容易使用 JSON 列并在其中存储字符串值数组。然后你可以写
class Foo(db.Entity):
str_items = Optional(Json)
@property
def value_at_end(self):
return self.str_items[-1]
@classmethod
def get_values_at_end(cls):
values = select(v.value_at_end for v in cls)
return values
现在使用负索引访问 JSON 数组的最后一项应该在 PostgreSQL 中工作,我认为我们也应该为其他数据库添加它,它看起来比添加容易得多str.split
具有所有可能用例的方法。