手动为现有数据库创建ORM的优点和缺点?

时间:2016-08-09 00:05:01

标签: python database orm sqlalchemy

使用数据库反射手动为现有数据库创建ORM有哪些优缺点?

我正在使用SQLAlchemy编写一些代码来访问预先存在的数据库。我知道我可以使用sqlalchemy.ext.automap自动反映架构并创建映射。

但是,我想知道手动创建映射类是否有任何重大好处,而不是让自动化做出它的魔力。

如果有显着的好处,SQLAlchemy可以自动生成像Django' inspectdb这样的python映射类吗?这将使得创建所有声明性基本映射的速度更快,因为我只需要验证和调整而不是从头开始编写。

编辑: 正如@iuridiniz在下面所说,有一些解决方案可以模仿Django的inspectdb。见Is there a Django's inspectdb equivalent for SQLAlchemy?。该主题中的答案与Python3不兼容,因此如果您正在寻找实际维护的内容,请查看sqlacodegenflask-sqlacodegen

1 个答案:

答案 0 :(得分:0)

我看到很多用CREATE TABLE suppliers AS (SELECT * FROM companies WHERE 1 = 2 );创建的表,(一个穷人的表副本),它没有主键。如果现有表没有主键,则必须不断捕获异常并将Column个对象提供给映射器。如果你有方便的列对象,你已经有一半编写自己的ORM层了。如果您刚刚完成ORM,则不必担心表是否设置了主键。