SQLAlchemy对MySQLdb的目的

Eri*_*itt 15 python mysql sql sqlalchemy

为什么人们使用SQLAlchemy而不是MySQLdb?它提供了哪些优势?

Mik*_*ham 21

你不使用SQLAlchemy而不是MySQLdb-你使用SQLAlchemy访问类似MySQLdb,oursql(我听到的另一个MySQL驱动程序更好,性能更好),sqlite3模块,psycopg2或你正在使用的任何其他数据库驱动程序.

ORM(如SQLAlchemy)有助于抽象出您正在使用的数据库的详细信息.这使您可以避免使用您正在使用的数据库系统的细节,避免一些错误的可能性(并引入其他人的可能性),并使移植变得微不足道(至少在理论上).

  • @Kit,没有SQLAlchemy Core不能取代实际的DBAPI2数据库适配器(如MySQLdb)。SQLAlchemy Core实际上并不与您的数据库通信。您需要安装MySQLdb(或最好是oursql)才能与MySQL通信。 (2认同)

Ale*_*lli 11

在不同的数据库引擎之间更容易移植(比如明天你决定要转移到sqlite,或PostgreSQL,或......),以及更高的抽象级别(从而可能提高生产力).

这些是一些很好的理由.使用ORM也有一些不好的理由,比如不想学习SQL,但我怀疑SQLAlchemy特别不是因为想要ORM而不是裸SQL的错误理由而受到人们的青睐;-).


wes*_*cpy 6

除了亚历克斯所说的......

  1. “不想学习SQL”可能是件坏事。但是,如果您想让更多的非技术人员参与到开发过程中,那么 ORM 在这方面做得非常好,因为它确实将这种复杂程度降低了一个层次。使 Django 成功的要素之一是它能够让“报纸记者”而不是软件工程师维护网站。

  2. ORM 的局限性之一是它们不像使用原始 SQL 那样具有可扩展性。在之前的工作中,我们想摆脱大量手动 SQL 生成并切换到 ORM 以方便使用(SQLAlchemy、Elixir 等),但几个月后,我最终不得不再次编写原始 SQL绕过 ORM 系统生成的低效或高延迟查询。

  • 回复:原因 2,特别是使 SA 如此出色的部分原因是,将原始 sql 粘贴到您喜欢的任何位置是微不足道的:engine.execute("MY RAW SQL STRING;") (3认同)