问题标签 [django-postgresql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何改进由我可能很差的 Django 代码生成的这个丑陋的 Postgresql 查询?
我在 Django 视图中这样做:
那是因为我有一个装备,但我不知道它是什么装备(望远镜、相机等)。这是一个基本模型。
所以我用它来判断所有的可能性reduce
。由于 Gear 的所有子类(也是 Django 模型)都pk
与基类 Gear 共享,我可以这样做。我知道它的可读性不是很好,我也没有解释得太清楚,但是如果你看一下下面生成的 SQL,就会清楚。
我正在尝试获取使用该设备(Gear)拍摄的所有图像,因此请查看它pk
是否在image__telescopes
、image__imaging_cameras
等中。
然而,这最终产生了这个 SQL:
所以这个查询需要 2 秒以上......你能建议一种方法来改善这个混乱吗?
python - 自定义字段的 Django 管理员默认排序
我有以下 django 管理员除外:
现在这一切正常,total_videos 和 total_active_videos 都显示了正确的信息。如果单击表头,total_videos 也是可排序的。但是,如果我尝试将代码更改为:
我收到一个错误:
TagAdmin.ordering[0]' 指的是模型“videos.Tag”中缺少的字段“total_videos_order”。
如果它只是“total_videos”也一样。作为一种解决方法,我可以忽略它,只需单击标题,但它困扰我为什么,如果它通过单击默认顺序无法设置,当字段明显存在时?有什么想法吗?
问题的第二部分是是否可以在过滤字段“total_active_videos”上添加排序。据我了解,不可能用条件进行注释,因此不能像对“total_videos”那样做,但还有其他解决方案吗?
谢谢!
python - Django (postgresql-psycopg2) 连接池:简单 vs 线程 vs 持久连接池
我正在使用 postgresql db 后端查看要在我的 Django 应用程序中使用的数据库连接池实现,并遇到了为 psycopg2 实现的这个最近的包装器包 -
https://pypi.python.org/pypi/django-db-pool
根据此处的文档 - http://initd.org/psycopg/,psycopg2本身提供了不同类型的池,即简单(跨单线程共享)、线程(跨线程共享)和持久(严格每个线程一个持久连接)文档/pool.html。
ThreadedConnectionPool
从源代码中可以看出,djang-db-pool 似乎正在使用该实现。
目前,在我的 Django 应用程序实现中,每个请求都可以产生多个线程,这意味着处理多个并发 Django 请求,是ThreadedConnectionPool
正确的方法吗?
有没有其他人有使用这个包(django-db-pool)或 psycopg2 连接池与 Django 的经验,并且可以对此有所了解?
django - 如何调试“无法从客户端接收数据:对等方重置连接”
我在 Ubuntu-12.04 上运行 django-celery 应用程序。
当我从 Web 界面运行 celery 任务时,我收到以下错误,格式为 postgresql-9.3 日志文件(最大日志级别):
tss_usr 是 django 应用程序数据库的 postgresql 用户,并且(在这个例子中)8113 是杀死连接的进程的 pid,我猜。
您对为什么会发生这种情况或至少如何调试此问题有任何想法吗?
为了让事情再次运行,我需要重新启动 postgresql,这非常不舒服。
python - Postgres 插入返回原始 Django 模型查询不起作用?
我有一个要插入的简单模型。我正在使用以下语法:
在 postgres 中,这将返回相同的列: select * from my_model where col = 'test' limit 1; 会回来的。但是,我无法让它工作。我不得不求助于:
我也可以尝试原始游标语法,但是,原始游标似乎应该可以工作,因为返回的列直接映射到我正在使用的 raw() 模型。
python - pytz、Django 1.5 和 postgres:DST 时区问题
我用 Django 1.5.4 和 postgres 9.1 创建了一个活动站点。“回退”的时间刚刚更改,管理员在时间更改之前输入的所有日期/时间数据现在都减少了一个小时。
在我的 Django 设置中,我有TIME_ZONE = 'America/Chicago'
和USE_TZ = True
. 活动地点适用于美国中部时区的一个小城市。服务器和数据库也设置为这个时区。查看数据库,我可以知道哪些事件发生在更改之前,因为它们最后都说“-05”,而在“-06”之后输入的事件。虽然,据我了解,postgres 应该将时间戳保存为 UTC,即使它使用偏移量向我显示它。
为了显示数据,我通过 Django 的 ORM 将其从数据库中提取出来,然后astimezone
在每次出现的开始日期时间上使用,如下所示:
这段特定的代码用于在主页上按日期安排事件,并且设置为从午夜开始的全天事件现在显示在前一天。时间也显示为“晚上 11 点”,这是由 Django 渲染的(我没有用 pytz 处理)。
我还有将事件转换为 json 以供 javascript 使用的代码,并且使用astimezone
与上述相同的方式,并且所有事件(在时间更改之前创建)也显示早了一个小时。
我在这里使用了一个事件工具的分支:https ://github.com/FirelightWebware/glamkit-eventtools ,并且时间在管理员中正确显示。
更新:只有在时间更改之前创建并在时间更改之后发生的事件才会延迟一个小时。所以从技术上讲,一切正常,因为它们是在不同的时区创建的,所以调整是有一定意义的。所以问题是,有没有办法在时间改变之前用正确的时间创建应该在时间改变之后发生的事件?现在我将不得不告诉管理员只在时间更改之前创建事件,然后在时间更改后创建更多事件。这是荒谬的。
python - Django 过滤器 - iregex 仅匹配完整的单词
所以我一直在尝试实现一个搜索功能,用户可以在其中输入关键字并查找用户。搜索方法应该在用户的字段中查找精确的单词匹配,例如名字、姓氏、工作等
我已经尝试过 icontains 但这也会在单词中匹配,例如,如果用户输入“a”,搜索将返回包含“a”的任何内容。(这是我在决定解决问题之前最初所做的)
我试过iexact
了,但这显然会给出一个完全匹配的结果,如果用户输入“john”,它会跳过名字是“john doe”之类的用户。
所以经过相当多的谷歌搜索后,我发现了两个stackoverflow线程
因为我使用的是 postgresql,所以我改用 \y 而不是 \b。现在我正在使用的查询是
我也试过了,其他方法列在我提到的两个线程中。
问题是它不返回任何东西。在调试时,我已经检查了正在生成的查询,据我所知,这似乎是正确的。
我的数据库目前有大约 5 个用户,其中一个的名字为“ahsan”,另一个的名字为“ahsan saleem”。但是,此查询不返回任何内容。我真的很感激任何帮助。
编辑:我尝试切换到 SQLite 并用 \b 更改 \y 并且搜索似乎已经开始工作。但是我不能使用 sqlite,如果有人可以指导我,我将不胜感激。
另一个编辑:我通过切换数据库解决了我的 postgresql 问题。总之是个愚蠢的错误。问题是您将如何使用mysql进行这项工作,我所尝试的一切都失败了。
sql - 如何在 Django 中使用具有外键的表有效地编写 DISTINCT 查询
我想在前端下拉列表中显示不同的用户城市。为此,我进行了一个数据库查询,该查询city_name
与表不同,City
但仅获取用户所在的城市。
像下面这样的东西适用于小尺寸的桌子,但如果桌子尺寸为 1000 万User
,则需要很长时间。User
这些用户的不同城市仍然是〜100。
现在我尝试搜索不同的城市名称:
这在 PostgreSQL 上转换为:
时间:9760.302 毫秒
这清楚地表明 PostgreSQL 没有使用 'user'.'city_id' 上的索引。我还在这里阅读了一个解决方法,其中涉及编写一个自定义 SQL 查询,该查询以某种方式利用索引。
我尝试使用上面的查询找到不同的 'user'.'city_id',结果实际上速度非常快。
时间:79.056 毫秒
但是现在我发现很难将其合并到我的 Django 代码中。我仍然认为这是一种在代码中添加自定义查询的技巧。但对我来说更大的担忧是列名可以是完全动态的,我不能在代码中硬编码这些列名(例如 city_id 等)。
使用自定义查询至少需要将字段名称以“__”作为分隔符并处理第一部分。但这对我来说似乎是一个糟糕的黑客行为。
我该如何改进呢?
PS。该City
User
示例仅用于解释该场景。语法可能不正确。
python - Heroku DatabaseError 上的 Django postgresql 值对于类型字符变化而言太长(1000)
保存 Django 模型对象时出现此错误:
DatabaseError:类型字符变化的值太长(1000)
模型内部有一个文本字段:
我将一串超过 1000 个字符的字符串保存到该字段中(歌曲歌词)。webapp 在本地运行时可以工作,它也使用 postgresql,但在 Heroku 上部署时会生成此错误
Heroku的postgresql有硬性限制还是有办法增加它?
谢谢。
sql - django & sql - 如何有效地存储和更新与数据库表中的记录关联的排序顺序信息?
所以我有一个 Django 应用程序,其中一张表基本上是一个项目列表。用户可以选择重新排列此列表的顺序。当他们这样做时,我想保留这些信息,以便他们下次访问应用程序时,排序顺序会按照他们指定的方式显示。
我的第一直觉是将订购号与列表中的每个项目相关联。然后,如果用户将项目从位置 5 移动到位置 2,我将更新与该记录关联的订单号。
然而,我立即意识到,这意味着更新数据库中的所有其他记录并调整它们的订单号。这似乎效率低下。
有没有更好的方法来保存和更新任意订购信息?