Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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 django将以前的数据保存在数据库中_Python_Django_Postgresql - Fatal编程技术网

Python django将以前的数据保存在数据库中

Python django将以前的数据保存在数据库中,python,django,postgresql,Python,Django,Postgresql,我在我的django网站中使用了postgresql\u psycopg2数据库。以前我在test basis中使用了sqlite3,但我离开了它,因为现在我要在服务器上运行我的项目,所以我们知道在sqlite3中,如果我们编辑模型,那么我们必须删除整个数据库,因为据我所知,sqlite3不提供任何数据库更新服务或迁移服务 因此,我切换到了postgresql\u psycopg2。由于我是django的新手,现在我如何在更新模型后保留以前的数据 例如,我有一个 照片模型类似的东西 class

我在我的django网站中使用了
postgresql\u psycopg2
数据库。以前我在test basis中使用了
sqlite3
,但我离开了它,因为现在我要在服务器上运行我的项目,所以我们知道在
sqlite3
中,如果我们编辑模型,那么我们必须删除整个数据库,因为据我所知,
sqlite3
不提供任何数据库更新服务或迁移服务

因此,我切换到了
postgresql\u psycopg2
。由于我是django的新手,现在我如何在更新模型后保留以前的数据

例如,我有一个 照片模型类似的东西

class Photo(models.Model):
    name = models.CharField(max_length = 100)
    photo = models.ImageField(upload_to = 'photos', blank=False,null=True)
    approved = models.BooleanField(default = False)
    approved_time = models.DateTimeField(auto_now=True,null=True,blank=True)
    uploaded_time = models.DateTimeField()
    description = models.CharField(max_length = 500 , blank = False , null = True)
    keyword = models.CharField(max_length = 500 , blank = False , null = True)
    user = models.ForeignKey(User)
现在我想在我的
Photo
模型中添加一个额外字段

class Photo(models.Model):
    name = models.CharField(max_length = 100)
    photo = models.ImageField(upload_to = 'photos', blank=False,null=True)
    approved = models.BooleanField(default = False)
    approved_time = models.DateTimeField(auto_now=True,null=True,blank=True)
    uploaded_time = models.DateTimeField()
    description = models.CharField(max_length = 500 , blank = False , null = True)
    keyword = models.CharField(max_length = 500 , blank = False , null = True)
    user = models.ForeignKey(User)
    #new field added
    photo_dpi = models.CharField(max_length = 500 , blank = False , null = True)

现在,在添加新字段后,如何保留以前的数据。

您应该使用迁移来编辑数据库结构:

或者,如果您的django版本低于1.7,South软件包:

只需运行以下命令:

python manage.py makemigrations
python manage.py migrate
更新
makemigrations
/
migrate
命令自django 1.7起可用

正如@eugene soldatov在回答django 1.5时提到的,你可以使用
South
应用程序

另一个选项是通过执行以下SQL查询手动更改表:

echo "ALTER TABLE myapp_photo ADD COLUMN photo_dpi VARCHAR(500) NULL;" | python manage.py dbshell

其中,
myapp
是您的应用程序的名称。

谢谢您的回答,我很抱歉忘记提到我的django版本,我使用的是django 1.5。这些命令是否适用于此版本?