我在现有MSSQL数据库中有几十个表都使用自动编号ID主键,但没有一个表名为'id' . 它们被命名为PropertyID,ClientID等 . 官方文档似乎建议将每个字段重命名为'id':
传统数据库web2py可以在某些条件下连接到旧数据库:每个表必须具有一个名为“id”的唯一自动增量整数字段 . 必须使用“id”字段专门引用记录 . 如果不满足这些条件,则必须手动ALTER TABLE以使它们符合这些要求,否则web2py无法访问它们 . 这不应被视为限制,而是作为web2py鼓励您遵循良好实践的众多方式之一 .
但是,这将需要在使用此数据库的其他应用程序中破坏数百个现有查询 . 当然必须有一些方法来指定要使用的现有自动编号字段的名称而不是'id' .
这似乎是一个Django正确的领域,web2py得到了可怕的错误 . 或者我只是错过了什么?似乎我只是遗漏了一些东西......
2 回答
该陈述已经过时 . web2py支持三种情况:
表有一个名为'id'的自动增量字段(默认)
一个表有一个不称为'id'的自动增量字段,用表定义表
db.define_table('name',Field('id_name','id'),...other fields...)
db.define_table('name',...fields..., primarykey=[....])
主键是字段名称列表 .
选项3不适用于所有受支持的数据库,但可以轻松扩展 . 我们只是没有得到太多的请求,所以我们没有足够的测试人员可用于所有可能的选项 . 请在web2py邮件列表中移动此讨论,我们很乐意为您提供更多帮助 .
显然这还没有成为当前的web2py书,但看起来事实上已经实现了 . 来自web2py google群组:web2py and keyed tables .
注意:我通过浏览New features not documented in PDF book (2 ed)找到了这个