新数据库拒绝显示在web2py appadmin中

时间:2011-12-27 10:32:56

标签: python database web2py

我正在尝试新的博客数据库设计,我想在web2py的管理界面中运行一些测试。

  • 我首先从web2py的管理界面创建一个名为newblog的新web2py应用程序。
  • 接下来,我在
  • 下面创建了newblog/models/appdb.py
  • 然后我浏览了https://172.25.1.1/newblog/appadmin/index的管理界面以确保数据库已创建
  • 我检查了文件系统,databases/newblog.db有一个全新的创建时间
  • 我点击appadmin菜单查看我的新数据库:“web2py”> “此应用程序”> “数据库”

问题:问题是我在newblog的数据库管理界面中没有看到它。我看到appadmin界面中显示了其他空的web2py数据库,所以我不明白为什么我的那些没有出现。

问题:这是预期的行为吗?如果是这样,我需要采取哪些最小步骤才能使我的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 个答案:

答案 0 :(得分:5)

除了您的自定义db.py文件之外,您还可以使用默认的appdb.py文件。注意,模型文件按字母顺序执行,因此在文件后执行db.pydb.py为变量db分配不同的数据库连接,因此只有该数据库显示在appadmin中。您应该对两组表使用相同的数据库,或者对两个数据库连接对象使用不同的变量。例如,在appdb.py中,您可以执行以下操作:

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

如果要对所有表使用相同的数据库,则只需在第一个文件中定义DAL对象(在本例中为appdb.py),然后可以在所有后续模型文件中引用它(执行不重新定义它。)