Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用settings.py或models.py在django中自动创建数据库_Python_Django - Fatal编程技术网

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