标签: django-south

没有数据库的 Alembic 迁移

Alembic 是否可以在不访问数据库的情况下自动生成迁移?

例如,django/south 能够通过将 a 的当前版本Model与 .a 的先前快照Model进行比较来做到这一点。

sqlalchemy django-south alembic django-migrations

5
推荐指数
1
解决办法
1539
查看次数

Django 1.2 + South 0.7 + django-annoying的AutoOneToOneField导致TypeError:'LegacyConnection'对象不可迭代

我正在使用Django 1.2 trunk和South 0.7以及从django-annoying复制的AutoOneToOneField.South抱怨该字段没有定义规则,新版本的South不再具有自动字段类型解析器.所以我阅读了South文档并编写了以下定义(基本上是OneToOneField规则的精确副本):

rules = [
  (
    (AutoOneToOneField),
    [],
    {
        "to": ["rel.to", {}],
        "to_field": ["rel.field_name", {"default_attr": "rel.to._meta.pk.name"}],
        "related_name": ["rel.related_name", {"default": None}],
        "db_index": ["db_index", {"default": True}],
    },
  )
]
from south.modelsinspector import add_introspection_rules
add_introspection_rules(rules, ["^myapp"]) 
Run Code Online (Sandbox Code Playgroud)

现在,当我进行模式移植时,South会引发以下错误.

Traceback (most recent call last):
  File "manage.py", line 11, in <module>
    execute_manager(settings)
  File "django/core/management/__init__.py", line 438, in execute_manager
    utility.execute()
  File "django/core/management/__init__.py", line 379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "django/core/management/base.py", line 196, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "django/core/management/base.py", line 223, in execute
    output = self.handle(*args, **options) …
Run Code Online (Sandbox Code Playgroud)

python django django-models django-south

4
推荐指数
1
解决办法
1234
查看次数

如何在django中加载带有圆形外键的灯具?

我有一个类别模型,其中包含一个循环外键.我从这个模型中转储了所有数据,并使用django-south创建了一个数据迁移,以便将它们加载到不同的DBMS中,但由于这种循环依赖性,我在执行它时遇到了很多问题.

这是我所指的模型:

class Category(MPTTModel):
    name = models.CharField(_('name'), max_length=50, unique=True)
    parent = models.ForeignKey('self', null=True, blank=True, related_name='categories')
    description = models.TextField(_('description'), blank=True, null=True)
    created_on = models.DateTimeField(auto_now_add = True, default=date.today())
    updated_on = models.DateTimeField(auto_now = True, default=date.today())

    def __unicode__(self):
        return "%s" %(self.name)

    class Meta:
        verbose_name = _('category')
        verbose_name_plural= _('categories')
Run Code Online (Sandbox Code Playgroud)

django django-south

4
推荐指数
1
解决办法
2872
查看次数

如何让South在Heroku中为Django应用程序工作

我正在使用Python/Django,我正在尝试使用South来管理我的数据库.在当地环境中工作得很好.当我部署到Heroku时出现问题.问题是当我用它创建迁移时

$heroku run manage.py schemamigration mydjangoapp
Run Code Online (Sandbox Code Playgroud)

看起来它的工作原理(shell确认了它)然而,然后我尝试使用迁移,它将无法正常工作.当我做:

$heroku run python manage.py migrate mydjangoapp
Run Code Online (Sandbox Code Playgroud)

我明白了

The app 'createtuto' does not appear to use migrations
Run Code Online (Sandbox Code Playgroud)

我检查了问题,看起来heroku不允许South在/ myDjangoapp/migrations创建迁移目录.

有什么办法可以让它发挥作用吗?

我尝试使用convert_to_south,但我得到了相同的结果:一开始看起来它有效,但它没有,没有创建迁移.

python database django heroku django-south

4
推荐指数
2
解决办法
4787
查看次数

Django 1.4 TimeField迁移在PostgreSQL上失败

我在模型上编辑了两个字段,并将它们从IntegerFields 更改为TimeFields:

class Model(models.Model):
    start_time = models.TimeField()
    end_time = models.TimeField()
Run Code Online (Sandbox Code Playgroud)

我正在使用这两个字段来保存一个天真的时间,这与任何地理时间概念无关,因此没有真正的"时区"(想想类似于比赛时间的东西).我的本地数据库是PostgreSQL.

但是,此更改生成的南迁移失败,并出现以下错误:

> main:0005_auto__chg_field_model_start_time__chg_field_model_end_time
FATAL ERROR - The following SQL query failed: ALTER TABLE "main_model" ALTER COLUMN "start_time" TYPE time, ALTER COLUMN "start_time" SET NOT NULL, ALTER COLUMN "start_time" DROP DEFAULT;

...

File ".../lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 52, in execute
    return self.cursor.execute(query, args)
django.db.utils.DatabaseError: column "start_time" cannot be cast to type time without time zone
Run Code Online (Sandbox Code Playgroud)

迁移失败的原因如下:

class Migration(SchemaMigration):

    def forwards(self, orm):

        # Changing field 'Model.start_time'
        db.alter_column('main_model', 'start_time', self.gf('django.db.models.fields.TimeField')()) …
Run Code Online (Sandbox Code Playgroud)

django postgresql django-models django-south django-1.4

4
推荐指数
1
解决办法
1448
查看次数

如何修复Django中的数据库错误和重影迁移错误?

我收到一个DatabaseError,说没有名为playlist的列存在,我正在试图弄清楚如何修复它.我正在使用南方.我删除了我的迁移文件夹中的旧文件并运行:

python manage.py schemamigration app_name --initial
python manage.py migrate reserve
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我收到此错误:

south.exceptions.GhostMigrations: 

 ! These migrations are in the database but not on disk:
    <reserve: 0002_initial>
 ! I'm not trusting myself; either fix this yourself by fiddling
 ! with the south_migrationhistory table, or pass --delete-ghost-migrations
 ! to South to have it delete ALL of these records (this may not be good). 
Run Code Online (Sandbox Code Playgroud)

我不知道如何摆脱这个错误,因为在我的迁移文件夹中我只有init.py(c)和0001_initial.py(c); 我没有0002迁移文件了.

当我尝试运行服务器并在管理员中点击"添加播放列表"时,这就是我收到DatabaseError的时候.如果有帮助,我的models.py是:

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    def __unicode__(self):
        return self.user

def create_user_profile(sender, instance, created, **kwargs):
    if created:
        UserProfile.objects.create(user=instance) …
Run Code Online (Sandbox Code Playgroud)

python django model django-south

4
推荐指数
1
解决办法
1万
查看次数

使用多个数据库时出现南错误:django.db.utils.ConnectionDoesNotExist:连接foo不存在

我有2个Django项目,其中包含以下数据库设置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'db1', # 'db2' for second db
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试使用命令同步第二个db时

python manage.py syncdb --database = db2

我收到错误

django.db.utils.ConnectionDoesNotExist:连接db2不存在

当我使用其他一些命令时,South使用第一个项目的迁移并使用错误的表填充db2.如何正确同步/迁移单个Django + South实例提供的多个项目?

django django-south

4
推荐指数
1
解决办法
4578
查看次数

南无法创建新字段,因为字段不存在

我正在尝试使用South将新的URLField添加到模型中,例如:

class Document(models.Model):
    text = models.TextField()
    reference_page = models.URLField(blank=True, null=True)
    source_page = models.URLField(blank=True, null=True) # new field
Run Code Online (Sandbox Code Playgroud)

但是,当我运行时,python manage.py schemamigration myapp --auto我得到错误:

DatabaseError: column myapp_document.source_page does not exist
LINE 1: ...ext", "myapp_document"."reference_page", "myapp_doc...
Run Code Online (Sandbox Code Playgroud)

我正在使用PostgreSQL作为我的数据库后端.我正确地初始化了我的南方应用程序,并且已经为它运行了迁移.我确保我的Django和South安装是最新的.

为什么现在会给我这个错误?

编辑:奇怪的是,如果我手动创建数据库中的列,则schemamigration调用成功,但当然migrate调用失败,直到我手动删除列.这很奇怪.

python django django-south

4
推荐指数
1
解决办法
1109
查看次数

Alembic修订版ID代表什么?

我刚刚开始关注Alembic,来自Django,在那里我们有South来迁移我们的数据库模式(很快就会包括在内),它使用一个友好的旧固定宽度数字0037_fix_my_schema.py来讨论迁移的顺序.应用,我很自然地被Alembic的修订版ID所吸引.是否有DAG支持Alembic,或者有人可以在这方面对其内部进行一些概述?

revision sqlalchemy django-south directed-acyclic-graphs alembic

4
推荐指数
1
解决办法
401
查看次数

南错误,但没有使用它."没有南数据库模块'south.db.mysql'"

安装Django后,我收到此错误消息(当我想运行迁移或runserver时):

您的数据库没有南数据库模块'south.db.mysql'.请选择支持的数据库,检查SOUTH_DATABASE_ADAPTER [S]设置,或从INSTALLED_APPS中删除South.

我不想使用South,它也没有在INSTALLED_APPS中定义.为什么我收到此错误?

django django-south

4
推荐指数
1
解决办法
3390
查看次数