【问题标题】:web2py dal howto define model at runtimeweb2py dal 如何在运行时定义模型
【发布时间】:2014-01-09 15:14:16
【问题描述】:

我是 wewb2py 的新手,是否可以在运行时创建一个遗留数据库的模型,以便与它一起使用 DAL?看到有一些创建模型文件的脚本,但是不知道把这个文件放在我应用的模型目录下是否正确,我觉得不对,我做了一些实验,可以连接数据库DAL 查询其表,对于每个表,我可以获得字段的定义,我尝试使用 define_table 定义表,它可以工作,但尝试在数据库上创建表并返回错误,因为表已经存在;这是我的代码的相关部分:

conn_string = "mysql://{0}:{1}@{2}/{3}".format(user,pwd,host,db_name)

db = DAL(conn_string)

db.define_table('test1',Field('prova','string'))

它只在第一次工作,当表 test1 在数据库上还不存在时,我不需要创建只使用它们的数据的表,你能把我放在正确的地方吗?

【问题讨论】:

    标签: mysql postgresql web2py


    【解决方案1】:
    db = DAL(conn_string, migrate_enabled=False)
    

    以上内容将阻止 web2py 进行任何迁移,包括尝试创建任何表。

    【讨论】:

    • 您能否更明确地说明什么不起作用以及您看到了什么错误。您可以从应用程序的 /databases 文件夹中删除 *.table 文件从头开始,如果您不想进行任何迁移,请确保 migrate_enabled=False。
    • 不是 migrate=False 吗?
    • 如果您在对DAL() 的调用中添加migrate=False,则只需将每次调用中“迁移”参数的默认值设置为.define_table()。 “迁移”参数的任何显式设置都将覆盖该默认值。设置 DAL(..., migrate_enabled=False) 会完全禁用迁移,无论每个 .define_table() 中的“迁移”参数的值如何。
    猜你喜欢
    • 1970-01-01
    • 2015-08-27
    • 2015-07-19
    • 2011-01-09
    • 1970-01-01
    • 2014-09-02
    • 2013-07-17
    • 2013-10-03
    • 2012-02-22
    相关资源
    最近更新 更多