小编jjg*_*jgg的帖子

在 django 中运行许多startwith查询的最快方法

我有一个项目编号列表,可能有数千个元素长。我需要在 SQL 数据库中搜索以列表中的数字开头的记录。我正在使用 django ORM,但原始 sql 也可以工作。

例如,我的列表可能如下所示:['123ab', '234dd', '421ad']

我试图找到一个比循环遍历列表并每次都运行startswith查询更好的解决方案,如下所示:

for element in list:
    Item.objects.filter(
        item_number__startswith=element
    ).values(
        'item_number',
        'manufacturer'
    )
Run Code Online (Sandbox Code Playgroud)

上面循环的问题是,对于大量的项目编号来说,它会非常慢。有没有更有效的方法来做到这一点?

sql django

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

Typeorm 连接终止

我正在将 Typeorm 与 postgresql 数据库一起使用。我正在测试一个运行 findOne 查询的函数,它抛出以下错误:

{ QueryFailedError: Connection terminated
    at new QueryFailedError (/Users/juanjosegutierrez/projects/banking-server/node_modules/typeorm/error/QueryFailedError.js:27:28)
    at Query.callback (/Users/juanjosegutierrez/projects/banking-server/node_modules/typeorm/driver/postgres/PostgresQueryRunner.js:212:38)
    at Query.Object.<anonymous>.Query.handleError (/Users/juanjosegutierrez/projects/banking-server/node_modules/pg/lib/query.js:142:17)
    at process.nextTick (/Users/juanjosegutierrez/projects/banking-server/node_modules/pg/lib/client.js:59:13)
    at process._tickCallback (internal/process/next_tick.js:61:11)
  message: 'Connection terminated',
  name: 'QueryFailedError',
  query:
   'SELECT "Contact"."id" AS "Contact_id", "Contact"."type" AS "Contact_type" FROM "contacts" "Contact" WHERE "Contact"."id" = $1',
  parameters: [ '52e1da6e-f4e1-41dc-9dcd-22679c4265e4' ] }
Run Code Online (Sandbox Code Playgroud)

当我查看我的 postgres 日志时,我看到以下内容:

LOG:  unexpected EOF on client connection with an open transaction
Run Code Online (Sandbox Code Playgroud)

为什么我的连接被终止?

postgresql node.js typeorm

2
推荐指数
1
解决办法
1775
查看次数

标签 统计

django ×1

node.js ×1

postgresql ×1

sql ×1

typeorm ×1