您不会使用SQLAlchemy来代替MySQLdb,而是使用SQLAlchemy来访问像MySQLdb、oursql(另一个据说更好且性能更佳的MySQL驱动程序)、sqlite3模块、psycopg2或您正在使用的其他数据库驱动程序。ORM(如SQLAlchemy)有助于抽象出您正在使用的数据库的详细信息。这使得您可以避免陷入所使用的数据库系统的繁琐细节中,有时也可以避免错误的可能性(并引入其他可能性),使得迁移变得微不足道(至少在理论上如此)。
更容易在不同的数据库引擎之间进行移植(比如说,明天你决定要转移到sqlite、PostgreSQL等),并且具有更高层次的抽象(因此可能会提高生产力)。 这些是使用ORM的一些好理由。当然,也有一些不好的理由,比如不想学习SQL,但我怀疑特别是SQLAlchemy并不是因为这样的不良理由而受到人们青睐,而是因为它比裸露的SQL更方便使用。
除了Alex所说的内容之外...1. "不想学习SQL"可能是一个坏习惯。然而,如果你想让更多避免使用SQL的人参与到开发过程中,ORM(对象关系映射)可以很好地完成这个任务,因为它抽象出了"原始SQL",将复杂性降低了一级。使Django成功的因素之一是其能够让"报纸记者"来维护网站,而不是软件工程师。2. ORM的一个限制是它们不像使用原始SQL那样具有可扩展性。在以前的一份工作中,我们想要摆脱大量手动SQL生成的工作,于是转向ORM以便更容易使用(SQLAlchemy、Elixir等)。但几个月后,我又不得不编写原始SQL来避免由ORM系统产生的低效或高延迟查询。