2014-09-04 2 views
0

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

Следующий код представляет собой пример таблицы, относящейся к выпадающему меню.

######################################################################### 
## Conglomerado_tenencia_opcion 
db.define_table('Conglomerado_tenencia_opcion', 
      Field('num_tenencia','integer', required='TRUE'), 
      Field('nombre_tenencia', 'text', required='TRUE')) 

if db(db.Conglomerado_tenencia_opcion.id>0).count() == 0: 
db.Conglomerado_tenencia_opcion.insert(num_tenencia='1',nombre_tenencia='Ejidal') 
db.Conglomerado_tenencia_opcion.insert(num_tenencia='2',nombre_tenencia='Comunal') 
db.Conglomerado_tenencia_opcion.insert(num_tenencia='3',nombre_tenencia='Propiedad particular') 
db.Conglomerado_tenencia_opcion.insert(num_tenencia='4',nombre_tenencia='Propiedad federal') 

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

Я хотел бы объявить в качестве первичного ключа поле 'num_tenencia', но, по-видимому, web2py не разрешает его, так как первичный ключ должен быть автогенерирован. Как вы можете видеть в приведенном выше коде, 'num_tenencia' уникален для каждой записи.

¿Кто-нибудь знает об этом решении?

ответ

2

Вы можете сделать:

db.define_table('Conglomerado_tenencia_opcion', 
    Field('num_tenencia','integer', required=True), 
    Field('nombre_tenencia', 'text', required=True), 
    primarykey=['num_tenencia']) 

Однако это не рекомендуется, так как это ограничивает некоторые функциональные возможности web2py (для получения более подробной информации смотрите раздел книги на keyed tables).

В любом случае, даже если вы установите свой собственный первичный ключ, если разные версии приложения будут работать в разных системах, вам все равно придется разработать схему, чтобы убедиться, что в системах нет дубликатов (возможно, UUID 'ы).

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

Смежные вопросы