天道酬勤,学无止境

orm

An attempt to mix objects belonging to different transactions

问题 pony.orm.core.TransactionError: An attempt to mix objects belonging to different transactions 我知道这个错误是描述性的,我只是无法弄清楚它为什么会发生。 我搜索了谷歌、文档、其他 SO 帖子,但一无所获。 有任何想法吗? 回答1 如果有人试图互连属于两个不同数据库会话的身份映射的两个对象,则会出现此错误: from pony.orm.examples.university1 import * populate_database() with db_session: g = Group[101] with db_session: s = Student[4] s.group = g # or g.students.add(s) 每个 db 会话应仅与在此 db 会话中检索到的对象一起使用。 如果您需要在 db 会话之间存储一些信息,您可以存储对象的id值而不是对象本身。 您也可以在一个db_session中腌制对象,然后在另一个db_session中取消腌制它们。

2022-07-11 09:57:22    分类:技术分享    orm   ponyorm

Order by split string django orm

问题 我有一个 ID 作为参考号和年份,格式如下: 1/17 98/15 2/17 112/17 2345/17 67/17 9/17 8974/16 当我使用 django orm 获取我的 ID 时: obj = MyIDs.objects.filter(run='run_1').order_by('ID') 我按照第一个数字的顺序将它们取出: 1/17 112/17 2/17 2345/17 67/17 8974/16 9/17 98/15 但是,由于 / 后面的数字是年份,我想按年份然后数字来订购它们。 我可以在 mySQL 中轻松做到这一点(使用子字符串索引等),如果它是一个 python 列表,但我现在不想在将它们发送到我的 html 模板之前处理我的对象 - 有没有办法做到这一点在 orm? 回答1 MyIDs.objects.filter(run='run_1').annotate( slash_pos=StrIndex(F('id'), '/') ).annotate( y=Substr(F('id'), F('slash_pos')) ).order_by('y', 'id')

2022-05-17 05:16:17    分类:技术分享    python   mysql   django   orm

Microservices with shared database? using multiple ORM's? [closed]

问题 关闭。 这个问题是基于意见的。 它目前不接受答案。 想改进这个问题? 更新问题,以便可以通过编辑这篇文章用事实和引用来回答它。 1 年前关闭。 改进这个问题 我正在学习微服务,我将使用微服务架构构建一个项目。 问题是,我的一个队友想要为所有服务使用一个数据库,共享所有表以便“数据不会重复”,每个服务都将使用不同的框架和语言构建,例如 django 和 rails,它们使用非常不同的 ORM标准。 什么是正确的方法? 因为我认为使用一个数据库将涉及大量“破解” ORM 以使其正常工作。 回答1 如果所有服务共享相同的数据库表,您不太可能从微服务架构中受益。 这是因为您有效地紧密耦合服务。 如果数据库表发生更改,所有服务都必须更改。 您必须了解,微服务架构的全部原因是减少开发团队之间的依赖关系,并允许他们通过快速发布独立前进。 以下是亚马逊首席技术官 Werner Vogels 的一句话(亚马逊开创了许多微服务风格的架构): 对我们来说,面向服务意味着用对数据进行操作的业务逻辑封装数据,并且只能通过已发布的服务接口进行访问。 不允许从服务外部直接访问数据库,并且服务之间不存在数据共享。 有关更多信息,请阅读此和此。 2021年更新: 一些评论者指出,共享一个物理数据库可能是可以的,例如通过在同一个数据库中为不同的服务使用不同的表或模式。 这当然是可能的

2022-05-16 18:47:04    分类:技术分享    database   database-design   orm   architecture   microservices

Sequelize: connect to database on run time based on the request

问题 我正在开发一个 node.js 应用程序,我需要连接到多个数据库。 其中一个数据库是中央数据库,其中包含所有人共有的信息。 然后是国家级数据库,根据国家/地区存储数据。 我在应用程序中使用 sequelize ORM。 数据库是postgresql。 框架很明确。 问题是我想根据要使用哪个数据库的请求来决定运行时,模型应该自动连接到适当的数据库。 我已经看到了这个问题,但没有发现它有帮助。 我还检查了另一个论坛,但没有找到任何东西。 回答1 您需要创建与每个数据库对应的对象,并且您需要在每个此对象上实例化 Sequelize。 此外,对于每个 sequelize 实例,您需要导入模型(假设所有这些数据库都具有完全相同的表和模型表示)。 import Sequelize from 'sequelize'; let connectionsArray = [ 'postgres://user:pass@example.com:5432/country1', 'postgres://user:pass@example.com:5432/country2', 'postgres://user:pass@example.com:5432/country3', ]; let country1DB, country2DB, country3DB; country1DB =

2022-05-16 09:41:15    分类:技术分享    node.js   postgresql   orm   sequelize.js   sequelize-cli

How to convert an array of objects as string in symfony 3?

问题 在 b/w 2 实体(产品和优惠)中实现多对多关系时出现以下错误: 可捕获的致命错误:FoodBundle\Entity\Product 类的对象无法转换为字符串 其中 Product 实体与 Offer 实体相关。 我的目的是利用多对多关系的产品报价。 正如我从错误中猜测的那样,这段代码正在创建它。 class Offer { public function addProduct(\FoodBundle\Entity\Product $product) { $this->product[] = $product; return $this; } } 请帮我解决这个问题。 回答1 当您自动创建 CRUD 时,此问题很常见。 问题是您需要在 Offer 表单中从<select>中选择一个 Product 并且 symfony 无法绘制选择,因为Product 类没有指定应该呈现哪个字段。 转到您的产品实体并添加神奇的__toString方法(如果可以,请提供它),它应该如下所示: class Product { public function __toString(){ // Or change the property that you want to show in the select. return $this->name; } }

2022-05-14 17:18:32    分类:技术分享    php   arrays   object   orm   symfony-3.1

setting persistence context to read-only in jpa

问题 我们将使用旧数据库。 因此,在任何情况下(来自报告模块)都不要修改数据库/表/模式非常重要,因此我想将一些持久性单元设置为只读的持久性上下文(用于报告模块) , 和一些正常的 JTA 启用。 我们已经考虑过创建两个帐户以在这些持久性单元中使用,一个将被授予只读访问权限,另一个将具有读写访问权限。 我想知道我们是否可以使用persistence.xml 文件做一些更简单的事情,或者可能在JDBC 驱动程序级别,以便我与数据库的连接基于活动的持久性单元选择性地只读和读写. 或正在使用的数据库驱动程序 url...我们使用 SQL-Server 作为数据库服务器...如果这有帮助的话。 回答1 据我所知,标准 JPA 中不支持此功能(除了使用具有受限数据库连接权限的用户)。 但是您的 JPA 提供者可能支持: 只读实体(例如使用 ElipseLink @ReadOnly或 Hibernate @Immutable注释) 通过提示进行只读查询(例如,EclipseLink 的eclipselink.read-only设置为true或 Hibernate 的org.hibernate.readOnly设置为true )。 我检查了 Microsoft JDBC 驱动程序的连接属性,但没有发现任何有用的东西。 PS:EclipseLink (Bug 282595) 有一个待定的增强请求

2022-05-14 04:26:10    分类:技术分享    sql-server   orm   jpa   jdbc   readonly

HQL: Hibernate query with ManyToMany

问题 我对 HQL 查询和休眠有疑问。 我有一个用户类和一个角色类。 一个用户可以有很多角色。 所以我有一个这样的多对多关系: 在用户类中: @ManyToMany(fetch = FetchType.LAZY) @oinTable(name = "PORTAIL_USERROLE", joinColumns = { @JoinColumn(name = "USERID", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "ROLE", nullable = false, updatable = false) }) public Set<Portailrole> getPortailroles() { return this.portailroles; } 在角色类中: @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "PORTAIL_USERROLE", joinColumns = { @JoinColumn(name = "ROLE", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name =

2022-05-12 15:21:09    分类:技术分享    java   hibernate   orm   hql

Any drawbacks of using Hibernate EntityManager (vs. Hibernate Core)?

问题 Hibernate EntityManager 文档指出: 根据项目的业务和技术需求,您可以结合使用这三者的组合、没有 JPA 编程接口和生命周期的注释,甚至可以使用纯原生 Hibernate Core。 您可以随时回退到 Hibernate 本机 API,或者如果需要,甚至可以回退到本机 JDBC 和 SQL。 使用 JPA API (EntityManager) 的代码显然更具可移植性(即使偶尔回退到 Hibernate Core)。 但是,当我使用纯 Hibernate Core 时,我会有什么优势吗? 我想知道,JPA 2 模型是否真的适合 Hibernate Core 之上而没有任何矛盾? IOW,回退到 Core 总是很容易而且没有问题吗? 我主要担心的是: 也许差异不仅在于 API,还在于底层语义?! (例如,可能发生冲突的不同事务/版本控制/锁定语义:Core 文档中提到了悲观锁定,但 EntityManager 文档中没有提到 - 所以我仍然可以通过回退到 Core 来使用悲观锁定而不会引起问题吗?诸如此类的事情.. .) 回答1 但是,当我使用纯 Hibernate Core 时,我会有什么优势吗? 如果 JPA 2.0 支持您所需要的,我认为直接使用 Hibernate Core 没有任何优势(而在 JPA 2.0 中,差距变得越来越小,使得回退到

2022-05-12 13:00:25    分类:技术分享    java   hibernate   orm   jpa   jpa-2.0

How to delete one-to-one relating models cascading in django?

问题 背景: 我在 Django(1.8.5) 中定义了以下模型: class PublishInfo(models.Model): pass class Book(models.Model): info = models.OneToOneField( PublishInfo, on_delete=models.CASCADE) class Newspaper(models.Model): info = models.OneToOneField( PublishInfo, on_delete=models.CASCADE) Book 和NewsPaper与OneToOneField共享相同的模型PublishInfo ,这实际上是唯一的外键。 现在,如果我删除一个PublishInfo对象,相关的Book或Newspaper对象将被级联删除。 问题: 但实际上,我想删除Book或Newspaper对象时级联的PublishInfo对象。 这种方式是我可以调用的方式。 在这种情况下,有什么好的方法可以自动反向级联删除吗? 如果是,可以解释吗? 回答1 from django.db.models.signals import post_delete from django.dispatch import receiver @receiver(post_delete, sender

2022-05-12 06:58:24    分类:技术分享    python   django   model-view-controller   orm   model

Any thoughts on DevExpress XPO ORM Package? [closed]

问题 就目前而言,这个问题不适合我们的问答形式。 我们希望答案得到事实、参考资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。 如果您认为此问题可以改进并可能重新打开,请访问帮助中心获取指导。 10年前关闭。 XPO 是我公司首选的对象关系映射器。 关于利弊的任何想法? 我只是在寻找有关该产品的一般感觉和轶事。 我们不会切换到 XPO。 我们只是摆脱了应用程序中的硬编码 sql 字符串,并完全转移到 ORM 以进行所有数据访问。 回答1 我已经使用它 6 到 7 个月了,对我来说,卖家的事实是,他们所有的 UI 组件都可以与 XPO 相对无缝地工作——而且他们的 UI 组件是一流的。 有些人可能会注意到他们的论坛受到的监控很差,而且几乎没有有用的流量——这是真的。 秘诀就是填票。 他们对所有支持请求做出快速、准确的响应。 回答2 总体而言,XPO 易于使用。 但是,当您计划使用遗留数据库或尝试将其引入棕地应用程序时,可能会有些痛苦。 我遇到的最痛苦的障碍是: 所有对象都需要从 XPO 相关类继承和/或使用 XPO 相关属性。 所以,没有 POCO 对象不支持只读持久字段 OOTB。 这是可能的,但您需要做一些小技巧来阻止 XPO 更新数据库中的字段不支持预过滤关联,这会导致网络负载过大对外部复合键的支持很差。 公平地说,没有 ORM 可以很好地处理复合键。

2022-05-11 13:38:10    分类:技术分享    c#   windows   orm   devexpress   xpo