【问题标题】:SQLAlchemy - SQLite for testing and Postgresql for development - How to port?SQLAlchemy - 用于测试的 SQLite 和用于开发的 Postgresql - 如何移植?
【发布时间】:2011-02-12 14:18:48
【问题描述】:

我想将 sqlite 内存数据库用于我的所有测试,并将 Postgresql 用于我的开发/生产服务器。

但是两个数据库中的 SQL 语法并不相同。例如:SQLite 有自动增量,而 Postgresql 有串行

将 SQL 脚本从 sqlite 移植到 postgresql 是否容易...您的解决方案是什么?

如果你想让我使用标准 SQL,我应该如何在两个数据库中生成主键?

【问题讨论】:

  • 如果您的生产数据库软件的价格为 20,000,000 美元,而您无法以同样的价格购买测试数据库,我也许会明白为什么您会考虑这样做。但是您使用的是来自 PostgreSQL 的免费开源软件,并且没有任何借口或合乎逻辑的理由去做您所要求的事情。

标签: python sqlite postgresql sqlalchemy


【解决方案1】:

虽然我们从 sqllite 开始作为我们的测试环境,但我们非常希望为每个开发人员运行 postgres。我们有脚本来构建我们的单元测试运行所针对的测试数据库,并且我们有一个开发人员使用的“开发”版本。

我们调查了在 ramdisk 上“在内存中”运行 postgres,但这个讨论:http://dbaspot.com/forums/postgresql/395602-memory-postgresql-database.html 表明没有必要。

我们还没有遇到任何问题,但它仍处于开发过程的早期阶段,我们还没有做任何太花哨的事情。

zzzeek 指出了一些可能很快就会绊倒我们的项目:(

最好现在就行动....

【讨论】:

    【解决方案2】:

    不要这样做。不要在一种环境中进行测试并在另一种环境中发布和开发。您要求使用此过程的错误软件。

    【讨论】:

      【解决方案3】:

      我的建议是:不要。 Postgresql的能力远远超出SQLite所能提供的,特别是在日期/数值支持、函数和存储过程、ALTER支持、约束、序列、UUID等其他类型,甚至使用各种SQLAlchemy技巧来尝试把它弄平只会让你走得更远一点。特别是日期和间隔算术在两个平台上是完全不同的野兽,SQLite 不像 PG 那样支持精度小数(非浮点)。 PG 很容易安装在每个主要操作系统上,如果你走这条路,生活会更轻松。

      【讨论】:

      • 同意,在任何平台上设置 Postgresql 都非常容易,因此没有理由使用其他数据库进行个人开发。甚至还有一个 Windows 服务可以让它一发不可收拾。 pgAdminIII 是一个功能异常强大的 GUI 管理工具,可以让设置数据库变得轻而易举。
      • 我曾经犯过一个错误,尝试使用 sqlite 进行开发,使用 postgresql 进行生产。它只会带来痛苦和折磨。
      猜你喜欢
      • 2022-01-14
      • 2016-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      相关资源
      最近更新 更多