问题标签 [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 投票
1 回答
1449 浏览

python - PonyORM - 多个模型文件

我想将我的模型类分成模型目录中的单独文件。我想有一个单独的文件:

  • 一般(身份验证和全局类/表)
  • 申请(用于申请的表格)
  • 工单(用于工单的表格)
  • sales_orders(用于销售订单的表)
  • ...ETC

我不确定如何构建我的项目以实现这一目标。

我已经尝试将我的主要导入放入目录中的init .py 中,然后将它们导入到各个模型文件中,但我不知道将我的 db.generate_mapping() 放在哪里,以便所有类都可用。我猜这是大型应用程序的最佳实践。目前,我的应用程序中有大约 150 个表。

任何帮助/指针将不胜感激。

0 投票
1 回答
796 浏览

python - Python Pony Orm 测试表是否为空

我想使用小马 orm 测试表是否为空。

起初我连接到数据库并说生成映射。我在这里使用“名称”表作为示例并连接到 postgres 数据库

我在 Pony Docs 中找不到任何关于检查表是否为空的内容。

上面的行给了我“错误”,因为该表已经存在。有谁知道解决方案?

0 投票
3 回答
2041 浏览

python - Python Pony ORM一次插入多个值

我正在尝试使用 Pony ORM 将多个值插入到我的 postgres 数据库中。我目前的方法效率很低:

这只是一个简短的示例,但输入的结构是相同的:列表列表。我从几个 xml 文件中提取数据并一次插入一个“文件”。

有谁知道如何将多行数据放入 Pony ORM 中的一个插入查询中?

0 投票
1 回答
279 浏览

python - 声明式查询中的 Python Pony ORM 单行属性

我正在尝试在选择查询中使用单行属性。由于 0.7.4 & 0.7.5应该是可能的。简单的操作,如+ (inside value_at_end property)工作,但我无法使用split()等。关于 0.7.4 和 0.7.5 更新应该是可能的。

得到错误:

现在我正在使用raw_sql但想制作更多的python,应该可以吗?

感谢帮助!

0 投票
2 回答
553 浏览

python - 跨不同 python 模块共享 PonyORM 的 db 会话

我最初启动了一个小型 python 项目(Python、Tkinter 和 PonyORM)并且变得更大,这就是为什么我决定将代码(过去只是单个文件)划分为几个模块(例如 main、form1、entity、database)。Main 作为主控制器,以 form1 为例可以包含一个 tkinter Frame,它可以用作用户可以输入数据的接口,entity 包含 pony.Database 实例的 db.Enttiy 映射和数据库及其连接详细信息. 我认为问题是在导入期间,我收到此错误“pony.orm.core.ERDiagramError:无法定义实体'EmpInfo':已经生成数据库映射”。您能否指出我应该如何完成的任何现有代码。

0 投票
1 回答
731 浏览

python - 在 Pony ORM 中增量构建查询

我正在评估从 peewee 切换到 Pony ORM。peewee 中提供的一件好事是能够从以下部分组成查询:

其工作方式是 peewee 模型类型上的各种运算符重载仅返回查询组件树,并且这些子树可以由进一步的运算符重载组成。拥有多个与&or|运算符链接在一起的查询组件也是一件简单的事情,例如model.Entry.select().where(some_test() & some_other_test()). 这非常有用,因为我的许多过滤查询都是以模块化方式组成的,并且大多数底层查询部分经常被重用,而且很多都是不平凡的(例如上面的示例)。

然而,在 Pony ORM 中,似乎只有(非常聪明!)AST 生成器解析器和原始 SQL。由于原始 SQL 表单无法让我直接传递必要的查询部分,因此如果可能的话,我更愿意使用一些更高级别的查询构建功能。

如果我尝试将查询部分定义为模型上的方法,例如:

我明白NotImplementedError了,毫不奇怪。

是否有一种机制可以从现有部分构建查询表达式,以传递给 SQL 查询构建器?(也许通过自己构建 AST 并将其传递到 Pony 的相关部分,或者有一种机制让我传递一个查询以被另一个子查询过滤。)

0 投票
1 回答
346 浏览

python - 如何创建表条目的实例但未在 ponyorm 中添加?

如何在不向相应表中插入行的情况下使用创建表定义的实例。

例如我想要的是:

以上可能吗?我想要这个的原因是我想使用类定义而不向数据库添加项目。这只是一种确保各地用户(在本例中)具有相同属性的非常简单干净的方法。

我最初使用pyDAL它,我发现设置表非常容易,但我必须定义表,然后还要编写类,所以我搬到了那里,ponyorm但不清楚我是否能实现我想要的。

谢谢你

更新 1:

一个示例用例是:

  • 我正在抓取一个网站
  • 我拉入“行”数据
  • 如果地址尚不可用
    • 创建用户实例
    • 不添加它只是将类用作数据的容器
  • 如果信息可用
    • 创建一个实例,并且仅当记录不存在时才添加它

基本上我希望能够将类用作信息的容器,而不必总是将其添加到数据库中。

0 投票
1 回答
222 浏览

python - Pony ORM - 为什么在使用 exists 命令时会出现断言错误?

我有一个相对复杂的结构,我一直在尝试获得一个最小的工作示例,但我无法做到。

我的表结构大致如下:

在表 2 中,当我有等效的代码时composite_key(height, length),代码工作正常。但是,当我compmosite_key(height, length, table1)执行存在语句时,它会返回一个AssertionError.

我浏览了一些源代码,并在以下几行中找到了一些问题:

我在 0.7.6 版上,安装了pip install pony

1875 年:assert prev_vals != new_vals在函数中db_update_composite_index

这是因为在第 4151 行: obj = cache_index.get(pkval)被错误地拉​​出(?)。

obj._dbvals_没有为无的条目。

然后在第 4591 行,如果old_dbval = get_dbval(attr, NOT_LOADED)old_dbval 默认为 NOT_LOADED,这会导致不删除属性。

这导致进入第if statement4616 行的循环if any(attr in avdict for attr in attrs)

并在cache.db_update_composite_index(obj, attrs, prev_vals, new_vals)因为prev_vals == new_vals

0 投票
2 回答
88 浏览

nose - 如何在鼻子测试覆盖中忽略 PonyORM 生成器表达式

nosetests --cover-erase --with-cover --cover-branches用来运行我的测试用例。

我正在使用 PonyORM 删除一组对象。下面是我的代码的样子。

当我计算覆盖率时,即使我执行remove_all_jobs. PonyORM 不执行内部的生成器表达式delete(

如何忽略生成器表达式并仍然检查delete(是否调用了?


我发现了什么。

  1. # pragma: no cover-> 不能使用,因为我需要覆盖delete
  2. [report] exclude_linesin.coveragerc也不适用于这种情况。
0 投票
1 回答
59 浏览

ponyorm - 如果我通过 sqlite 文件,小马 orm 可以推断数据库结构吗?

问题说了什么。

基本上你可以做类似的事情

并获取 db 中的结构。例如有db.entities