3

我在现有的 MSSQL 数据库中有几十个表,所有表都具有自动编号 ID 主键,但没有一个名为“id”。它们被命名为 PropertyID、ClientID 等。官方文档似乎建议将这些字段中的每一个重命名为“id”:

遗留数据库

web2py 在某些情况下可以连接到遗留数据库:

  • 每个表必须有一个唯一的自增整数字段,称为“id”
  • 必须使用“id”字段专门引用记录。

如果不满足这些条件,则需要手动 ALTER TABLE 使其符合这些要求,否则 web2py 无法访问它们。

这不应被视为限制,而是 web2py 鼓励您遵循良好实践的众多方式之一。

但是,这将需要在使用此数据库的其他应用程序中破坏数百个现有查询。当然,必须有某种方法来指定要使用的现有自动编号字段的名称,而不是“id”。

这似乎是Django 做对了,web2py 做错了。还是我只是错过了什么? 似乎我只是错过了一些东西......

4

2 回答 2

4

那句话已经过时了。web2py 支持三种情况:

  1. 表有一个名为“id”的自动增量字段(默认)
  2. 一个表有一个不称为“id”的自动增量字段,用

    db.define_table('name',Field('id_name','id'),...other fields...)

  3. 表具有不同的主键

    db.define_table('name',...fields..., primarykey=[....])

主键是字段名称的列表。

选项 3 不适用于所有支持的数据库,但可以轻松扩展。我们只是没有得到太多的要求,所以我们没有足够的测试人员来测试所有可能的选项。请将此讨论移至 web2py 邮件列表,我们很乐意为您提供更多帮助。

于 2010-07-14T12:23:25.903 回答
1

显然这还没有进入当前的 web2py 书籍,但看起来这实际上已经实现了。来自 web2py google 组:web2py 和 keyed tables

注意:我通过浏览PDF 书中未记录的新功能(第 2 版)发现了这一点

于 2010-07-12T18:42:18.417 回答