web2py auto_import vs define_table - PullRequest
       6

web2py auto_import vs define_table

1 голос
/ 05 февраля 2012

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

from gluon import DAL, Field

db = DAL('sqlite://storage.sqlite', auto_import=True)
for row in db(db.person).select():
    print row.name

Таблица была определена в предыдущем прогоне.

db = DAL('sqlite://storage.sqlite', auto_import=True)
db.define_table('person',
                Field('name'))
db.person[0] = {'name' : 'dave'}
db.commit()

Выполнение auto_import = True и define_table выдает ошибку о «неверном имени таблицы». Если ни один из них не выдаст ошибку, я попытаюсь получить доступ к db.table.

1 Ответ

2 голосов
/ 06 февраля 2012

При auto_import=True web2py будет получать имена и типы полей непосредственно из файлов * .table в папке приложения «базы данных». Когда документация ссылается на «атрибуты таблицы web2py», которые не будут доступны, она ссылается на атрибуты, которые определены в модели (т. Е. Используются db.define_table()), но не сохранены в базе данных или * .table файлах, таких как « требует "," виджет "," представлять "и т. д. Эти атрибуты определены только в коде web2py и поэтому не могут быть определены просто путем чтения файлов * .table. Обратите внимание, что файлы * .table используются для миграций базы данных, поэтому они хранят только метаданные, имеющие непосредственное отношение к базе данных (т. Е. Имена и типы полей и ограничения на уровне базы данных, такие как «notnull» и «unique»). Такие атрибуты, как «require» и «Представить», используются только web2py и не влияют на базу данных, поэтому не записываются в файлы * .table.

...