小编cud*_*cos的帖子

Django 1.11中的数据库索引:db_true,索引和index_together之间的差异

Django 1.11提供了创建数据库索引的新方法.到目前为止,我们db_index=True在每个领域都有:

# example 1

class Person(models.Model):
    name = models.CharField(db_index=True)
    age = models.IntegerField(db_index=True)
Run Code Online (Sandbox Code Playgroud)

现在我们已经models.Index和可能indexesclass Meta块内声明- 甚至是index_together.

那说我有两个疑问:

1.示例1中的代码是否与下面的示例2完全相同?

# example 2

class Person(models.Model):
    name = models.CharField()
    age = models.IntegerField()

    class Meta:
        indexes = [
            models.Index(fields=['name']),
            models.Index(fields=['age'])
        ]
Run Code Online (Sandbox Code Playgroud)

2. index多个字段怎么样index_together?下面的例子3和4做了完全相同的事情?

# example 3

class Person(models.Model):
    name = models.CharField()
    age = models.IntegerField()

    class Meta:
        indexes = [
            models.Index(fields=['name', 'age'])
        ]
Run Code Online (Sandbox Code Playgroud)
# example 4

class Person(models.Model):
    name = models.CharField()
    age …
Run Code Online (Sandbox Code Playgroud)

python django django-orm django-1.11

13
推荐指数
1
解决办法
2153
查看次数

为什么Flask-Migrate让我进行两步迁移?

我正在与Flask,SQLAlchemy,Alembic以及Flask(Flask-SQLAlchemy和Flask-Migrate)的包装器开展一个项目.我有四次迁移:

1c5f54d4aa34 -> 4250dfa822a4 (head), Feed: Countries
312c1d408043 -> 1c5f54d4aa34, Feed: Continents
41984a51dbb2 -> 312c1d408043, Basic Structure
<base> -> 41984a51dbb2, Init Alembic
Run Code Online (Sandbox Code Playgroud)

当我启动一个新的干净的数据库并尝试运行迁移时,我收到一个错误:

vagrant@precise32:/vagrant$ python manage.py db upgrade
...
sqlalchemy.exc.ProgrammingError: (ProgrammingError) relation "continent" does not exist
...
Run Code Online (Sandbox Code Playgroud)

如果我要求Flask-Migrate运行所有迁移,但是最后一次,它可以运行.如果之后我再次运行升级命令,它就可以工作 - 也就是说,它完全升级我的数据库而不需要对代码进行任何单一更改:

vagrant@precise32:/vagrant$ python manage.py db upgrade 312c1d408043
INFO  [alembic.migration] Context impl PostgresqlImpl.
INFO  [alembic.migration] Will assume transactional DDL.
INFO  [alembic.migration] Running upgrade  -> 41984a51dbb2, Init Alembic
INFO  [alembic.migration] Running upgrade 41984a51dbb2 -> 312c1d408043, Basic Structure

vagrant@precise32:/vagrant$ python manage.py db upgrade
INFO …
Run Code Online (Sandbox Code Playgroud)

flask alembic flask-migrate

6
推荐指数
1
解决办法
1385
查看次数