标签: django-postgresql

Django - 如何在Django错误页面中获取DatabaseError"当前事务被中止"的调试信息?

在我的Django项目上进行开发时,我得到一个DatabaseError,它说:

当前事务被中止,命令被忽略直到事务块结束

我知道这是因为没有回滚的PostgreSQL事务很糟糕,并且可以在PostgreSQL错误日志中找到此错误事务中的错误.但是,如果在Django错误页面上显示此错误,我认为会更方便.然后你可以直接看到问题所在.

那么,是否有可能在Django错误页面上获得这些PostgreSQL错误?如果是这样,怎么样?

python django debugging django-models django-postgresql

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

Django查询速度极慢

我遇到了Django应用程序的问题.对模型Scope的查询极其缓慢,经过一些调试后我仍然不知道问题所在.

当我scope = Scope.objects.get(pk='Esoterik I')在django中查询db 时需要5到10秒.该数据库的主键少于10个条目和索引.所以这太慢了.在db上执行等效查询时,SELECT * FROM scope WHERE title='Esoterik I';一切正常,只需要大约50ms.

如果我使用一组结果进行查询,scope_list = Scope.objects.filter(members=some_user)然后执行例如print(scope_list)或迭代列表的元素,则会出现同样的问题.查询本身只需要几毫秒,但元素的打印或迭代再次需要5到10秒,但该集只有两个条目.

数据库后端是Postgresql.问题在本地开发服务器和apache上发生相同.

这里是模型的代码:

class Scope(models.Model):
    title = models.CharField(primary_key=True, max_length=30)

    ## the semester the scope is linked with
    assoc_semester  =   models.ForeignKey(Semester, null=True) 

    ## the grade of the scope. can be Null if the scope is not a class
    assoc_grade     =   models.ForeignKey(Grade, null=True)

    ## the timetable of the scope. can be null if the scope is not direct associated with …
Run Code Online (Sandbox Code Playgroud)

database django performance django-queryset django-postgresql

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

'django_postgrespool'不是可用的数据库后端

安装django_postgrespool并相应地配置我的项目后,我收到以下错误:

Traceback (most recent call last):
  File "C:\Users\Administrator\Documents\my_proj\my_module.py", line 14, in <module>
    from cortex.my_app.models import MyModel
  File "C:\Users\Administrator\Documents\my_proj\my_app\models.py", line 3, in <module>
    from django.db import models
  File "C:\Users\Administrator\virtual_environments\spyker\lib\site-packages\django\db\__init__.py", line 40, in <module>
    backend = load_backend(connection.settings_dict['ENGINE'])
  File "C:\Users\Administrator\virtual_environments\spyker\lib\site-packages\django\db\__init__.py", line 34, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "C:\Users\Administrator\virtual_environments\spyker\lib\site-packages\django\db\utils.py", line 92, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "C:\Users\Administrator\virtual_environments\spyker\lib\site-packages\django\db\utils.py", line 44, in load_backend
    raise ImproperlyConfigured(error_msg)
django.core.exceptions.ImproperlyConfigured: 'django_postgrespool' isn't an available database backend.
Try using django.db.backends.XXX, where XXX is one of:
    'dummy', 'mysql', …
Run Code Online (Sandbox Code Playgroud)

django django-postgresql

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

Django管理员默认自定义字段的顺序

我有以下django admin exceprt:

class TagAdmin(admin.ModelAdmin):
    prepopulated_fields = {"slug": ("title",)}
    list_display = ['title', 'total_videos', 'total_active_videos', 'weight', 'status']
    search_fields = ['title']
    list_filter = ['status']
    ordering = ['-weight']

    def queryset(self, request):
        return Tag.objects.annotate(total_videos_order=Count('video'))

    def total_videos(self, obj):
        return obj.total_videos_order
    total_videos.admin_order_field = 'total_videos_order'

    def total_active_videos(self, obj):
        return u'%s' % Video.objects.filter(tags=obj, status=Video.STATUS_ACTIVE).count()
Run Code Online (Sandbox Code Playgroud)

现在一切正常,total_videos和total_active_videos都显示正确的信息.如果单击表标题,total_videos也是可排序的.但是,如果我尝试将代码更改为:

ordering = ['total_videos_order']
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

TagAdmin.ordering [0]'指的是模型'videos.Tag'中缺少的字段'total_videos_order'.

如果它只是"total_videos"相同.作为一种解决方法,我可以忽略它,只需点击标题,但它困扰我的原因,如果通过单击默认顺序排序无法设置,当字段显然存在?有什么想法吗?

问题的第二部分是否可以在过滤字段"total_active_videos"上添加排序.根据我的理解,它不可能用条件注释,因此它不能像"total_videos"那样完成,但还有其他解决方案吗?

谢谢!

python django orm admin django-postgresql

5
推荐指数
0
解决办法
1117
查看次数

Django主键有多大?

关于模型的pk值有多高可以获得最大值吗?例如,对于像活动Feed模型这样的东西,pk可以变得非常大.

例如,"Kyle喜欢这篇文章","Alex评论了这篇文章"等等.你可以看到,对于每个动作,都会创建一个活动供稿对象.是否会达到某种最大阈值?我做了一些研究,但没有找到简明的答案.如果有一些限制,怎么能克服这个?

我目前使用PostgreSQL作为我的数据库.

django primary-key django-models django-postgresql

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

在postgres hstore迁移时,Django测试失败

我在我的django应用程序中使用postgres,我在数据库中手动创建了hstore扩展.但是,当我运行测试时,它会尝试创建一个新数据库,并在找不到hstore扩展时失败.

我收到以下错误:

django.db.utils.ProgrammingError: hstore type not found in the database. please install it from your 'contrib/hstore.sql' file
Run Code Online (Sandbox Code Playgroud)

我按照这篇文章更新了我的迁移,结果如下:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations
from django.conf import settings
from django.contrib.postgres.operations import HStoreExtension
import django.contrib.postgres.fields
import django.contrib.postgres.fields.hstore


class Migration(migrations.Migration):

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        HStoreExtension(),
        migrations.CreateModel(
        name='AppUser',
        fields=[
            ('id', models.AutoField(serialize=False, verbose_name='ID', primary_key=True, auto_created=True)),
            ('created_date', models.DateTimeField(auto_now_add=True)),
            ('modified_date', models.DateTimeField(auto_now=True)),
            ('lock', models.BooleanField(default=False)),
            ('username', models.CharField(max_length=100)),
            ('email', models.EmailField(max_length=150)),
            ('social_data', django.contrib.postgres.fields.hstore.HStoreField(blank=True, default='')), …
Run Code Online (Sandbox Code Playgroud)

django django-models django-testing django-postgresql

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

Django查询以获取特定列的所有不同值的计数

我试图获取特定列中所有不同值的计数,例如我在模型名称MyModel中有以下表:

Id  City     vendor

1   Mumbai      2
2   Pune        3
3   Mumbai      1
4   Yavatmal    2
5   Pune        5
Run Code Online (Sandbox Code Playgroud)

我正在寻找像这样的输出:

[{'Mumbai':2},{'Pune':2},{'Yavatmal':1}]
Run Code Online (Sandbox Code Playgroud)

django django-models django-orm django-postgresql

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

CONN_MAX_AGE如何在Django中工作

有人ELI5有什么CONN_MAX_AGE吗?我认为它的工作原理如下:

1)请求#1进入,打开数据库连接1

2)请求#1使用连接1做一些工作

3)请求#1完成.由于CONN_MAX_AGE非零(并且尚未达到年龄),因此连接保持打开状态.

4)请求#2进入,Django重新使用连接#1到数据库.

但这似乎并没有发生.我的网站上有一个页面,每15秒进行一次AJAX轮询.在我的开发环境中,我看到开放连接(select count(*) from pg_stat_activity)的数量,慢慢增长,直到最终我得到

OperationalError: FATAL:  sorry, too many clients already
Run Code Online (Sandbox Code Playgroud)

所以我想知道我哪里出错了.CONN_MAX_AGE是否仅用于在单个HTTP请求中保持连接打开?

更新:

仔细查看文档,我看到了:

开发服务器为它处理的每个请求创建一个新线程,否定持久连接的影响.在开发过程中不要启用它们.

啊,所以这似乎意味着一个连接"属于"一个线程.(并且线程可以基于CONN_MAX_AGE的值打开/关闭连接).

django-orm django-postgresql

5
推荐指数
0
解决办法
961
查看次数

通过 django 在 postgres json 中存储无穷大

我有一个像下面这样的元组列表 -

[(float.inf, 1.0), (270, 0.9002), (0, 0.0)]

我正在寻找一个简单的序列化器/反序列化器,它可以帮助我将此元组存储在 PostgreSQL 的 jsonb 字段中。

我尝试使用JSONEncoder().encode(a_math_function)但没有帮助。

我在尝试将上述列表存储在 jsonb 字段中时遇到以下错误 -

django.db.utils.DataError: invalid input syntax for type json
LINE 1: ...", "a_math_function", "last_updated") VALUES (1, '[[Infinit...
DETAIL:  Token "Infinity" is invalid.
Run Code Online (Sandbox Code Playgroud)

注意:字段 a_math_function 是 JSONField() 类型

django infinity python-3.x django-postgresql postgresql-9.3

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

无法将类型整数转换为 uuid

我试图运行python3 manage.py migrate,但出现此错误:

  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django /db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: cannot cast type integer to uuid
LINE 1: ...BLE "core_post" ALTER COLUMN "id" TYPE uuid USING "id"::uuid
Run Code Online (Sandbox Code Playgroud)

我正在使用PostgreSQL

我的models.py: 链接到pastebin

我希望你能帮助我)

谢谢!

django postgresql django-models django-postgresql django-migrations

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