Python 使用settings.py或models.py在django中自动创建数据库
电流:Python 使用settings.py或models.py在django中自动创建数据库,python,django,Python,Django,电流: 1) mysql >> CREATE {DATABASE} db_name [create_specification] ; 2) change database info in settings.py 3) python manage.py syncdb (assuming we have ready-made models) 是否有一种方法可以不使用步骤1就完成同样的操作。也许可以将数据库名称和规范放在settings.py中的某个位置,这样我就不必每次将此项目转移到
1) mysql >> CREATE {DATABASE} db_name [create_specification] ;
2) change database info in settings.py
3) python manage.py syncdb (assuming we have ready-made models)
是否有一种方法可以不使用步骤1就完成同样的操作。也许可以将数据库名称和规范放在settings.py中的某个位置,这样我就不必每次将此项目转移到某个服务器时都手动配置数据库
编辑-
为什么我想避开第一步:
在我的例子中,不同表的不同列具有不同的排序规则类型。因此,在开发过程中,每当我重新创建数据库时,我都需要手动更改各个列/表的配置,这令人沮丧 您可以在开发阶段使用sqlite。授予整个应用程序数据库创建权限,以便在部署时节省少量手动初始化,这听起来是个坏主意
您应该创建一个单独的脚本来自动部署。似乎已经成为这方面的标准工具。我认为不可能回避第一步,至少如果您在django中使用除SQLite之外的其他数据库后端 文档中的注释: 如果您使用的是PostgreSQL或MySQL,请确保已创建 数据库在这一点上。使用“创建数据库名称” 在数据库的交互式提示中 如果您使用的是SQLite,则无需事先创建任何内容- 数据库文件将在需要时自动创建 如果您将项目移动到Heroku这样的服务器上,db的创建就会自动进行,就像使用PostgreSQL一样 我想知道为什么您要完成第一步,但是如果您感到绝望,您可能仍然希望通过psycopg2尝试直接使用python
您所需要的就是通过grant create database了解数据库用户/密码,所有其他数据都在设置中。您可以将自定义命令连接到信号以收集此数据 请查看post_syndb信号上提出的,以了解这一点 已编辑 syncdb不再可用。从1.9开始,您应该使用信号。通过以下方式完成: 如果至少settings.py上的用户已经能够连接数据库并具有创建权限,那么这应该可以工作 为了获得它,我建议提供一个envvar数据库的URL并使用 至少在博士后为我工作
1) ./manage.py sqlcreate | ./manage.py dbshell
2) ./manage.py migrate