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