Новая база данных отказывается отображаться в web2py appadmin - PullRequest
2 голосов
/ 27 декабря 2011

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

  • Я начал с создания нового приложения web2py под названием newblog из web2py.интерфейс администратора.
  • Затем я создал newblog/models/appdb.py, ниже
  • Затем я перешел к интерфейсу администратора на https://172.25.1.1/newblog/appadmin/index, чтобы убедиться, что база данных была создана
  • Я проверилфайловая система и databases/newblog.db имеют совершенно новое время создания
  • Я щелкнул через меню appadmin, чтобы увидеть мою новую базу данных: "web2py"> "Это приложение"> "База данных"

Проблема: Проблема в том, что я не вижу ее в интерфейсе администратора базы данных для newblog.Я видел другие пустые базы данных web2py, отображаемые в интерфейсе appadmin, поэтому я не понимаю, почему моя там не отображается.

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

"""
newblog/models/appdb.py
"""
def build_new_table():
    return dict({'ugly_dict': 42})

db = DAL('sqlite://newblog.db')

## Build a table of tables, by the type of table (i.e. post, code, etc)
db.define_table('db_type',
    Field('name', length=32, notnull=True, unique=True,
        comment="Name of the database table"),

    #IS_IN_DB(db, 'db.%s.name' % db.db_type.name)),
    Field('database_pointer', notnull=True, unique=True,
        compute=build_new_table(),
        comment="Reference to the database table identified by 'name'",
        ),
    )

## Define tags for the database items
db.define_table('tags',
    Field('name', length=32, notnull=True, unique=True),
    )

1 Ответ

5 голосов
/ 27 декабря 2011

Похоже, у вас есть файл db.py по умолчанию в дополнение к вашему appdb.py файлу.Обратите внимание, что файлы моделей выполняются в алфавитном порядке, поэтому db.py выполняется после вашего файла.db.py назначает другое подключение к базе данных переменной db, поэтому только эта база данных отображается в appadmin.Вам следует либо использовать одну и ту же базу данных для обоих наборов таблиц, либо использовать разные переменные для двух объектов подключения к базе данных.Например, в appdb.py вы можете сделать:

blogdb = DAL('sqlite:\\newblog.db')

Если вы хотите использовать одну и ту же базу данных для всех таблиц, просто определите объект DAL в первом файле (в этом случае appdb.py), и вы можете ссылаться на него во всех последующих файлах модели (не переопределяйте его).

...