【发布时间】:2011-02-02 18:21:37
【问题描述】:
为什么人们使用 SQLAlchemy 而不是 MySQLdb?它有什么优势?
【问题讨论】:
标签: python sql mysql sqlalchemy
为什么人们使用 SQLAlchemy 而不是 MySQLdb?它有什么优势?
【问题讨论】:
标签: python sql mysql sqlalchemy
您不使用 SQLAlchemy 而不是 MySQLdb——您使用 SQLAlchemy 来访问诸如 MySQLdb、oursql(我听说的另一个 MySQL 驱动程序更好并且性能更好)、sqlite3 模块、psycopg2 或任何其他数据库驱动程序之类的东西正在使用。
ORM(如 SQLAlchemy)有助于抽象出您正在使用的数据库的详细信息。这使您可以避免正在使用的数据库系统的混乱细节,避免有时出现错误的可能性(并引入其他可能性),并使移植变得微不足道(至少在理论上)。
【讨论】:
不同数据库引擎之间的可移植性更容易(假设明天您决定要迁移到 sqlite、PostgreSQL 或...),以及更高级别的抽象(因此可能提高生产力)。
这些是一些好的原因。使用 ORM 也有一些不好的原因,例如不想学习 SQL,但我怀疑 SQLAlchemy 并没有真正受到人们的青睐,因为他们想要 ORM 而不是纯 SQL;-)。
【讨论】:
除了亚历克斯所说的……
“不想学 SQL”可能是件坏事。然而,如果你想让更多的非技术人员参与到开发过程中,ORM 在这方面做得很好,因为它确实将这种复杂程度降低了一个层次。让 Django 成功的因素之一是它能够让“报纸记者”而不是软件工程师来维护网站。
ORM 的一个限制是它们不像使用原始 SQL 那样可扩展。在之前的工作中,我们想摆脱大量手动 SQL 生成并切换到 ORM 以实现易用性(SQLAlchemy、Elixir 等),但几个月后,我最终不得不再次编写原始 SQL绕过 ORM 系统生成的低效或高延迟查询。
【讨论】: