新项目启动:Python中数据库抽象的最佳实践,如何在不使用ORM的情况下保留MySQL或PostgreSQL选项
我想在使用MySQL和PostgreSQL之间灵活切换,但又不想用ORM(对象关系映射),因为我觉得SQL是一种很棒的语言,我希望能保留它的强大功能,而不想增加ORM带来的额外负担。
那么...有没有什么好的方法可以抽象化Python应用的数据库层,以便实现这种灵活性呢?
谢谢大家的帮助!
2 个回答
1
看看SQLAlchemy吧。它可以让你在多个关系型数据库上执行原始的SQL语句,比如MySQL和PostgreSQL。它把数据库的API适配器包裹起来,提供一个统一的接口,这样它们的表现会尽量相似。
SQLAlchemy还可以让你通过编程的方式生成SQL语句,不管你是否使用它自带的ORM(对象关系映射),这点你可能会觉得非常有用。
2
虽然SQLAlchemy是个不错的选择,但还有其他的选项。如果你觉得SQLAlchemy不太合适,这里有一些其他的ORM(对象关系映射工具),可能会更适合你。有些工具比较轻量,可能更符合你的需求。
http://coobs.eu.org/xrecord/ -- 从描述来看,这个工具听起来可能正是你想要的。它看起来比较轻量,只是一个数据库抽象工具,不过似乎有点过时了。
http://charlesleifer.com/blog/peewee-a-lightweight-python-orm/ -- 这个工具的性能测试结果看起来不错,适合一些基本的使用场景。
http://elixir.ematia.de/trac/wiki -- 这个工具是建立在SQLAlchemy之上的,但使用的是ActiveRecord风格的语法,可能会更符合你的口味。
https://storm.canonical.com/FrontPage -- 这是Canonical公司使用的一个ORM。