python - 在夹层中切换数据库后端

标签 python mysql django mezzanine

我正在尝试编写一系列示例,让读者逐步构建 Web 应用程序。第一阶段使用 Mezzanine 的默认配置,使用内置的 SQLlite:

sudo pip install mezzanine
sudo -u mezzanine python manage.py createdb 

初始示例完成后,我想将现有设置切换到 mysql 后端。如果这太复杂,我至少想在新后端重新创建 Mezzanine 附带的内置示例,但 Mezzanine 不允许重新运行 createdb

CommandError: Database already created, you probably want the migrate command

这看起来应该非常简单,但我似乎无法完全正确(单独使用 migrate 并不能解决问题)。 Google 和官方文档也无济于事。

我正在采取的步骤:首先,我在 Amazon RDS 上创建一个 MySQL 数据库。然后,我在 myapp/local_settings 中为它设置适当的配置(我确信这些步骤是正确的)。然后:

sudo apt install python-mysqldb
sudo -u mezzanine python /srv/mezzanine/manage.py migrate

然后:

Running migrations:
   No migrations to apply.

我错过了什么?

最佳答案

Mezzanine 项目基于 Python 框架 Django。
除非您遇到夹层特定的问题,否则大多数问题都可以通过弄清楚它是如何以 Django 方式完成的来解决的。

迁移 只是 Django 引用更改和修改的方式 数据库中,即模式(因为应用程序在发展,数据库是变形的)。

为了实际迁移数据,您可以:

  1. 从当前数据库中导出内容,eg:

    ./manage.py dumpdata > db-dump-in-json.json
    ./manage.py --format=xml > db-dump-in-xml.xml

如果数据太多或内存不足,这可能会崩溃。然后就是使用 native 数据库工具来获取转储

  1. settings.py 中为新数据库创建和添加设置:

  2. 创建表并在新定义的数据库上设置它们(基于您的模型):

    ./manage.py makemigrations
    ./manage.py 迁移

createdb = syncdb(创建)+ migrate(设置)合并

  1. 并在那里重新加载导出的数据:

    ./manage.py loaddata db-dump-in-json.json

关于python - 在夹层中切换数据库后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40067806/

相关文章:

python - 在 ADLS 上自动激活 SFTP

mysql - 如何SELECT FROM多个子查询结果的交集?

mysql - 计数不同时出现错误 1064

python - 在 Django 中全局设置 Decimal 选项

python - 使用 django 进行 mp3 流传输的问题

javascript - 未捕获的类型错误 : Object (JS Function) has no method 'apply'

python - 为什么加载这个文件占用这么多内存?

python - 使用 NUKE API 缓存脚本

php - sql : How to check a zipcode is exist in zipcode range

python - 替换数组Python中的整数