【问题标题】:ORM (object relational manager) solution with multiple programming language support具有多种编程语言支持的 ORM(对象关系管理器)解决方案
【发布时间】:2010-10-03 17:08:49
【问题描述】:

有没有很好的 ORM(对象关系管理器)解决方案,可以使用来自 C++、C#、Python 的相同数据库?

也可以是多种解决方案,例如一种语言,只要他们可以访问相同的数据库并使用相同的架构。

还需要多平台支持。

澄清:

我们的想法是拥有一个数据库,并通过用几种不同编程语言编写的软件来访问它。理想情况下,这将由一个具有所有这些语言的 API(或绑定)的 ORM 提供。

另一种解决方案是在每种语言中使用不同的 ORM,使用兼容的模式。但是我相信在这种情况下架构迁移会非常困难。

【问题讨论】:

  • 这个问题令人困惑。您是否想要一个用于 Python 的 ORM、另一个用于 C# 的 ORM 和第三个用于 C++ 的 ORM,它们都可以访问相同的底层关系数据库?或者你想要一个可以从 Python、C# 和 C++ 神奇地调用的 ORM?
  • 这些解决方案中的任何一个都适合我。
  • 好问题。但是,请澄清。问题应该可以在没有任何 cmets 的情况下回答。

标签: c# c++ python orm


【解决方案1】:

我知道DataAbstract 用于 Pascal、C# 以及很快用于 Mac 和 Iphone 的 Objective C,但不支持 Python。

【讨论】:

    【解决方案2】:

    我们有一个具有 C++ 和 C#(实际上是 COM)绑定(在 FOST.3 中)的 O/RM,我们正在将版本 4 中新增的 Python 绑定与 Linux 和 Mac 支持放在一起。

    【讨论】:

      【解决方案3】:

      使用 SQLAlchemy,您可以使用反射来获取架构,因此它应该可以与任何受支持的引擎一起使用。

      我用它把数据从旧的 SQLite 迁移到 Postgres。

      【讨论】:

      • 不是我想要的。我不想迁移到不同的数据库,而是想使用 ORM(s) 从多种编程语言访问一个模式
      • @Ber:这是对您问题的澄清吗?请编辑您的问题以添加这些新事实。
      • @Ber:关键是 SQLAlchemy 可以为您提供现有模式的类和表定义,因此您不必在代码中再次声明它(或在模式更改时更改它)。当然,C# 和 C++ 没有元类,因此对于它们,您必须自己定义模式。
      • @Ber:即,SqlAlchemy 只是对 Python 端的一个很好的建议。如果你可以从 Python 接口到其他语言,那将是最好的选择。
      • 谢谢 Nikhil - 迁移只是一个例子:关键是它建立在预先存在的数据库上,只是模式的反映。
      猜你喜欢
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2012-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多