问题标签 [ponyorm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1280 浏览

python - 如何使用小马 orm 以多对多关系加载数据?

这是我的实体:

这是我用来获取一些数据的代码:

无论我是否使用预取方法,生成的 sql 看起来总是一样的:

然后当我迭代结果时,小马正在发出另一个查询(查询):

我想要的行为是如果 orm 只发出一个查询来加载所有需要的数据。那么我该如何实现呢?

0 投票
1 回答
483 浏览

python - ValueError: 属性 Users.request 是必需的

我又需要帮助了。谁能告诉我为什么我会收到这个错误?我使用 Flask 和小马 orm 和 python 3.4。我的文件很少。

用户.py

文件模型.py

我得到的这个错误:

这可能如何解决?谢谢!

0 投票
1 回答
1047 浏览

python - 如何从 Pony ORM 中的 Set() 中仅获取一张图像

实体:

我想在汽车列表页面上获取信息:一辆车 - 那辆车的一张图片。

我用:

我有

但我只需要每辆车的第一张图像,而不是所有图像。

这个怎么做?

谢谢!

0 投票
1 回答
324 浏览

ponyorm - 清除定义一对多关系的集合时 PonyORM 孤立项

我有一个基本关系定义如下: db = Database('sqlite', 'test_db.sqlite', create_db=True)

现在,我在用@db_session 修饰的函数中将一些项目添加到WOEID.trends。这按预期工作。现在我尝试通过首先使用读取对象来更新 WOEID.trends

后来我发出

删除旧条目,然后将新条目添加到趋势集中。

在此操作后生成的趋势表中,我添加了项目,但以前的项目(从集合中清除)没有被删除,它们留在数据库中,“位置”字段为空(我猜它们被取消引用)。

我应该如何执行上述操作来读取孤立项?

0 投票
1 回答
421 浏览

python - 用 ponyorm 检查 PrimaryKey 是否存在

我正在尝试使用小马 orm 来查看是否存在主键。我做到了这一点,但它总是抛出一个错误。

这是功能

这是错误

0 投票
1 回答
2131 浏览

python - 如何使用 Pony ORM 存储 Python 枚举?

假设我在这里有这个简单的小 Pony ORM 映射。内置的 Enum 类是 Python 3.4 的新内容,并向后移植到 2.7。

当我运行程序时,会引发错误。

这是因为 Pony 不支持映射枚举类型。当然,这里的解决方法是只存储 Enum 值,并在 Class StateTable 中提供一个 getter 以再次将值转换为 Enum。但这是乏味且容易出错的。我也可以只使用另一个 ORM。如果这个问题变得太令人头疼,也许我会。但如果可以的话,我宁愿坚持使用 Pony。

我宁愿创建一个数据库转换器来存储枚举,就像错误消息暗示的那样。有谁知道如何做到这一点?

更新:感谢 Ethan 的帮助,我想出了以下解决方案。

0 投票
1 回答
589 浏览

python - 如何在 Pony ORM 中使用 Oracle 模式名称?

这是我需要的查询:

使用以下 Python 代码

这是 Pony ORM 生成的查询:

这自然会出错ORA-00942: table or view does not exist,因为 Oracle 认为这SCHEMA.LOT是完整的表名。我真正需要的是 Pony ORM 生成模式和表名的组合,表名由不属于字符串的点分隔。因此,以下任何一项都将起作用:

我试图通过定义_table_as来欺骗 Pony ORM 'SCHEMA"."LOT',但它只是自动将其转换为损坏的"SCHEMA"".""LOT". 真气!

有没有办法解决?

0 投票
1 回答
869 浏览

python - 为自定义 Pony 编写选择函数

很多时候,我写了如下查询:

所以,我想写我自己的版本select,它的替代品。就像避免我每次都写谓词的第一部分一样,if u.available and u.friends > 0.

我的问题更笼统:我如何编写一个像select它接受select方法或count方法可以接受的参数的函数。

0 投票
1 回答
652 浏览

python - 为 ponyorm 的实体定义构造函数会导致 TypeError

我只是想为一个小型个人 Web 应用程序试用小马 orm 映射器。除了为实体定义自定义构造函数外,一切正常。

在下面的代码中,我创建了一个带有字符串字段的简单实体name并定义了一个构造函数,它除了将参数重定向到父构造函数之外什么都不做(在我的真实应用程序中,我更改了一些参数,以便将它们传递给父构造函数)。之后我创建一个User并打印它的名字。

错误消息TypeError: object.__init__() takes no parameters与调用在同一行super()。看起来关键字参数被发送到object而不是db.Entity. 当我删除构造函数时,一切正常

那么为什么它不起作用。像我的示例中的构造函数不应该总是工作(当然什么也不做)吗?ponyorm 中有什么东西阻止它工作还是我在这里遗漏了什么?

为了完整起见,我的实体定义实际上看起来像这样

它产生相同的结果。

同样在官方文档中,它说至少允许在实体中创建方法。http://doc.ponyorm.com/entities.html#adding-custom-methods-to-entities。但它没有说明构造函数。

0 投票
1 回答
92 浏览

python - 如何避免来自外部调用的 DatabaseSessionIsOver

我有一些模型定义,我已经覆盖了他们的__repr__方法。例如,让我们考虑以下实体:

DatabaseSessionIsOver在我使用Flask-PonyWhoosh 的search(B, 'aaaa) 方法时引发异常,即使它使用的是包裹在里面:db_session

__repr__仅当某些实体以我在上面示例中所做的方式覆盖该方法时才会引发异常 。

但是,我使用以下句子来避免问题:

所以,很快,问题是,有没有什么办法可以避免使用with ...,也许修改__repr__方法或修改包中的方法?

谢谢,

PD:我一直在阅读预取方法,但似乎不合适。我不确定。