Могу ли я указать в web2py существующее именованное поле в качестве идентификатора автономного номера в устаревшей базе данных? - PullRequest
3 голосов
/ 12 июля 2010

У меня есть десятки таблиц в существующей базе данных MSSQL, все с первичные ключи идентификатора autonumber, но ни один из них не называется id. Они есть вместо именованных PropertyID, ClientID и т. д. Официальная документация похоже предлагает переименовать каждое из этих полей в 'id':

Устаревшие базы данных

web2py может подключаться к устаревшим базам данных под некоторыми Условия:

  • Каждая таблица должна иметь уникальный целочисленное поле с автоинкрементом "id"
  • Записи должны ссылаться исключительно с использованием поля «id».

Если эти условия не выполнены, это необходимо вручную изменить таблицу соответствовать им этим требованиям, или к ним не может получить доступ web2py.

Это не должно восприниматься как ограничение, а, скорее, как один из много способов web2py призывает вас следуйте хорошей практике.

Однако для этого потребуется разбить сотни существующих запросов на другие приложения, которые используют эту базу данных. Конечно, должен быть какой-то способ указать имя для существующего поля автонумерации, которое будет использоваться вместо 'Идентификатор'.

Кажется, это область, в которой Джанго понял все правильно и web2py понял это ужасно неправильно Или я просто что-то упустил? Кажется, я что-то упустил ...

Ответы [ 2 ]

4 голосов
/ 14 июля 2010

Это утверждение устарело.Web2py поддерживает три случая:

  1. таблица имеет поле автоинкремента под названием 'id' (по умолчанию)
  2. таблица имеет поле автоинкрементас именем 'id', определите таблицу с помощью

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

  3. таблица имеет другой первичный ключ

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

Первичный ключ - это список имен полей.

Вариант 3 не работает со всеми поддерживаемыми базами данных, но его легко расширить.Мы просто не получили много запросов на это, поэтому у нас не хватает тестеров для всех возможных вариантов.Переместите это обсуждение в список рассылки web2py, и мы будем рады помочь вам.

1 голос
/ 12 июля 2010

Очевидно, что это не вошло в текущую книгу web2py, но похоже, что это на самом деле реализовано. Из группы Google web2py: таблицы web2py и keyed .

ПРИМЕЧАНИЕ. Я нашел это, просмотрев Новые функции, не документированные в PDF-книге (2-е издание)

...