可能重复:
更新django数据库以反映现有模型的更改
我过去曾经使用过Django,而我作为ORM工具遇到的挫折之一就是无法通过模型中的更改来更新现有数据库.(Hibernate做得非常好,使得更新和大量修改模型并将其应用到现有数据库非常容易.)有没有办法在不 每次擦除数据库的情况下执行此操作?在我想要玩的模型中的每次更改之后,必须重新生成管理员用户和网站变得非常古老.
我最近从原始php移植到django并且必须将我的遗留数据库合并到其中.我使用该inspectdb命令从数据库中构建模型,一切正常.
最近,我决定增加的功能like和set to favorite.所以我添加了一个新表,如下所示.
class SongCollection(models.Model):
song_name = models.TextField()
song_type = models.CharField(max_length=765)
likes = models.IntegerField(default=0)
class Meta:
db_table = u'songcollection'
class likeSong(models.Model):
user = models.ForeignKey(User)
company = models.ForeignKey(SongCollection)
Run Code Online (Sandbox Code Playgroud)
第一个是我的原创class,另一个是用于存储哪个用户喜欢哪首歌.我正在使用完全开发的其他应用程序中的确切结构django,它们工作正常.但是当我尝试添加一个对象时,likeSong我得到以下错误.
Cannot add or update a child row: a foreign key constraint fails
Run Code Online (Sandbox Code Playgroud)
我也试图从MySql命令行添加这个对象,以便检查这是否是一个Django错误,但它也失败了.任何人都可以帮我理解这里究竟出了什么问题吗?
我将在我当前的应用程序中使用django-dbbackup.我的任务是在从UI按下"备份数据库"按钮时使用custom_name.db备份我最新的sqlite3数据库,并在按下"恢复此备份"时从现有备份列表中恢复备份.
在django-dbbackup中有两个管理命令,dbbackup和dbrestore用作
dbbackup [-s <servername>] [-d <database>] [--clean] [--compress] [--encrypt]
Run Code Online (Sandbox Code Playgroud)
和
dbrestore [-d <database>] [-s <servername>] [-f <localfile>]
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,如果我有原始数据库名称original_db.db并且我想将此db重命名备份为db_current_data_time.db,那么views.py方法应该是什么?
在Django文档状态
如果你依靠"自动事务"在select_for_update()和后续的写操作之间提供锁定 - 一个极其脆弱的设计,但仍然可能 - 你必须将相关代码包装在atomic()中.从Django 1.6.3开始,在自动提交模式下使用select_for_update()执行查询将引发TransactionManagementError.
为什么这被认为是脆弱的?我原以为这会导致适当的交易.
我在空DB上进行django迁移时遇到问题.什么时候,我想迁移我有一个循环依赖错误.ForeignKeys相关的两个应用程序之间的循环依赖性错误
/firstapp/models.py
class Person(models.Model):
genders_list = (
('m', 'Male'),
('f', 'Female'),
)
user_field = models.OneToOneField(User, on_delete=models.CASCADE)
gender = models.CharField(max_length=1, choices=genders_list, default='m')
phone_1 = models.CharField(max_length=25, verbose_name="Phone number")
phone_2 = models.CharField(max_length=25, verbose_name="Phone number 2", blank=True)
def __str__(self):
return self.user_field.first_name + self.user_field.last_name
class Doctor(Person):
job_position = models.CharField(max_length=255, verbose_name="Job position")
hospital_field = models.ForeignKey('hospital.Hospital', on_delete=models.SET_NULL, null=True, default=None,blank = True)
seat_field = models.ForeignKey('hospital.Seat', on_delete=models.SET_NULL, null=True, default=None,blank = True)
class Patient(Person):
doctor_field = models.ForeignKey('Doctor', on_delete=models.SET_NULL, null=True, default=None)
Run Code Online (Sandbox Code Playgroud)
/secondapp/models.py
class Hospital(models.Model):
name = models.CharField(max_length=255, verbose_name="Name")
description = models.TextField(verbose_name="Description") …Run Code Online (Sandbox Code Playgroud) 我需要在Python(Django)中将数据导出为SPSS文件格式,但我无法在谷歌中找到util信息.
有办法做到这一点吗?有人尝试过吗?
提前致谢!
对于网站上的用户,使用数据库在Django中存储信息的最佳方式是什么.我正在处理的网站有以下几个部分:
问题是,文件应存放在何处?(我不知道每个人会有多少人).对于每个文档,评论应存储在何处?(我不知道会有多少评论).
我对Django很新,并且刚开始我买的那本书,但需要开始计划才能在八月份完成它(这对于一个如此新的人来说甚至可能吗?).
AFAIK 在 Django 1.6 中,游标在请求之间共享,并在需要时打开一个新连接。但是,我找不到有关 connection.cursor() 方法如何工作以及如何在文档中的不同进程中使用 connection.cursor() 方法的任何信息。
我见过的大多数代码都没有关闭从 connection.cursor() 返回的游标对象,所以我假设 Django 在请求完成时自动关闭从 connection.cursor() 返回的游标对象,但是如果我调用 connection.cursor() 呢? ) 在不同的过程中?我应该在终止进程时关闭该游标还是游标的包装函数自动杀死自己?
我最近遇到了一个数据库问题,所以我决定用核武器攻击它,因为我没有重要的数据。我删除了应用程序目录中的迁移文件夹并删除了数据库。但是现在,当我重新创建所有内容时,manage.py migrate出现以下错误:
File "../manage.py", line 21, in <module>
main()
File "../manage.py", line 17, in main
execute_from_command_line(sys.argv)
File "/usr/local/lib/python3.6/dist-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.6/dist-packages/django/core/management/__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.6/dist-packages/django/core/management/base.py", line 323, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/local/lib/python3.6/dist-packages/django/core/management/base.py", line 364, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python3.6/dist-packages/django/core/management/base.py", line 83, in wrapped
res = handle_func(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/django/core/management/commands/migrate.py", line 234, in handle
fake_initial=fake_initial,
File "/usr/local/lib/python3.6/dist-packages/django/db/migrations/executor.py", line 91, in migrate
self.recorder.ensure_schema()
File "/usr/local/lib/python3.6/dist-packages/django/db/migrations/recorder.py", line 69, in ensure_schema …Run Code Online (Sandbox Code Playgroud) 我是 Django 新手,由于某些奇怪的原因,我的模型没有创建数据库表,并且完全不知道为什么。当我运行命令:“python manage.py makemigrations”时,我在控制台输出中显示以下内容:
Migrations for 'auctions':
auctions/migrations/0001_initial.py
- Create model User
- Create model Item
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎是准确的。然后我运行命令:“python manage.py migrate”,控制台输出中显示以下内容。
Operations to perform:
Apply all migrations: accounts, admin, auctions, auth, contenttypes, sessions
Running migrations:
No migrations to apply.
Run Code Online (Sandbox Code Playgroud)
查看数据库,果然没有创建任何内容。以下是我的 models.py 文件的输出:
from django.contrib.auth.models import AbstractUser
from django.db import models
class User(AbstractUser):
def __str__(self):
return f"{self.first_name}"
class Item(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="item_list")
title = models.CharField(max_length=64)
description = models.CharField(max_length=256, blank=True)
img_url = models.CharField(max_length=256, blank=True)
starting_bid = models.DecimalField(decimal_places=2, max_digits=8)
category = models.CharField(max_length=24, …Run Code Online (Sandbox Code Playgroud) python django database-migration django-models django-database