【问题标题】:web2py: How to rename a table?web2py:如何重命名表?
【发布时间】:2011-09-27 19:15:07
【问题描述】:

如何在 web2py 中重命名数据库表?如果没有直接的方法,那么最好的解决方法是什么?我发现的只是这个线程 http://groups.google.com/group/web2py/browse_thread/thread/ef724508324347e2/7966a423c293bdec web2py 的创建者说他没有简单的方法。

【问题讨论】:

    标签: web2py database-table table-rename


    【解决方案1】:

    在运行 web2py 时更改数据库架构

    db.executesql('ALTER TABLE old_name RENAME TO new_name;')
    

    这不会更改您的代码!只有您可以更改您的代码。

    所以,如果您只这样做一次,比如说因为您有一个丑陋或模棱两可的表名并且想要重构您的代码,那么最好不要使用 web2py 来更改数据库模式中的表名。以下是我的做法。

    • 停止应用程序

    • 使用 sqlite3 控制台程序或您使用的任何数据库管理程序重命名 db 模式中的表。我想这可能是你真正的问题,因为你习惯于使用 web2py 作为你的数据库管理程序。好吧,我想你将不得不学习如何使用 sqlite3 控制台控制台程序。

    • 更改模型中的代码

    • 重新启动应用程序。

    但是,如果你真的坚持只使用 web2py 来管理你的数据库,那么这样的事情应该可以工作:

    • 创建一个新的控制器,比如 'table_rename' 添加行

      db.executesql('ALTER TABLE old_name RENAME TO new_name;')

    到控制器

    • 浏览到 application/table_rename

    • 停止应用程序

    • 更改您的型号代码

    • 删除 table_rename

    • 重新启动应用程序。

    【讨论】:

    • 但是模型会知道这个吗?还是我必须单独更改模型? models.py 文件仍然有一个 define_table('old_name'...)。我先做什么?
    • SQL 将更改数据库架构。它不会改变你的代码!只有您可以更改您的代码。
    • web2py 保留有关 sql 的元数据。您的答案是否说明了这一点?当然我知道我可以进入数据库任意重命名东西..但我想以一种犹太教的方式来做,这样 web2py 就不会被混淆和/或损坏。
    • 也许你应该停止整个 web2py 服务器。
    猜你喜欢
    • 2012-08-01
    • 2018-03-31
    • 2020-10-18
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    相关资源
    最近更新 更多