这是避免使用SQLAlchemy / SQLObject的好方法吗?

时间:2009-08-23 21:15:05

标签: python sqlalchemy sqlobject

我没有使用ORM,而是在没有ORM(SQLObject / SQLAlchemy)的Python和MySQL中考虑以下方法。我希望得到一些反馈,看看这似乎是否会产生任何负面的长期后果,因为从短期来看,从我所知道的情况来看似乎很好。

而不是将数据库中的行转换为对象:

  • 每个表由类
  • 表示
  • 将行检索为dict
  • 表示游标的对象提供对表的访问,如下所示:

    cursor.mytable.get_by_ids(低,高)

  • 删除意味着将time_of_removal设置为当前时间

所以基本上这样就不需要ORM,因为每个表都有一个类来表示它,并且在该类中,一个单独的dict代表每一行。

类型映射是微不足道的,因为每个dict(行)都是python / blub中的第一个类对象,它允许您知道对象的类,此外,Python中的低级数据库库处理类型的转换。将字段级别转换为适当的应用程序级别类型。

如果您发现沿着这条路走下去有任何潜在的问题,请告诉我。感谢。

3 个答案:

答案 0 :(得分:8)

这并没有消除对ORM的需求。那 是一个ORM。在哪种情况下,为什么重新发明轮子?

您是否有令人信服的理由避免使用既定的ORM?

答案 1 :(得分:2)

您仍将使用SQLAlchemy。一旦你去.fetchmany()或类似的东西,ResultProxy实际上是一个字典。

使用SQLAlchemy作为一种工具,可以更轻松地管理连接,以及执行语句。文档几乎是分开的,因此您将只阅读您需要的部分。

答案 2 :(得分:0)

web.py也有一个不错的数据库抽象(不是ORM)。 查询是用SQL编写的(不是特定于任何rdbms),但是你的代码仍然与任何支持的dbs(sqlite,mysql,postresql和其他)兼容。

来自http://webpy.org/cookbook/select

myvar = dict(name="Bob")
results = db.select('mytable', myvar, where="name = $name")