MagicStack / MagicStack/asyncpg

column reference X is ambiguous

オープン
#773 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

主要言語
Python
スター
8.1k
フォーク
468
PR マージ指標
30日以内にマージされた PR はありません

説明

Hello everyone 👋

Migrating from psycopg2 to asyncpg, I'm facing an issue with an executemany.

Here is my example:

Table structure:

CREATE TABLE table_name
(
    column1            text PRIMARY KEY,
    ...
    column8            JSON,
    column9            numeric,
    column10           numeric,
    ...
);

SQL request:

sql = """
UPDATE table_name
SET column8 = data.column8, column9 = data.column9, column10 = data.column10
FROM unnest ($1::table_name[]) AS data(column1, column8, column9, column10)
WHERE table_name.column1 = data.column1"""

args = [("id_1", "json_string_1", None, None), ("id_2", "json_string_2", decimal("5"), decimal("8")), ...]

loop.run_until_complete(conn.executemany(sql, args))

The result of this request is column reference "column8" is ambiguous

I don't know if it's related (and I know this library isn't the same as psycopg2) but before I had to pass a template for this request (like so: template = "(%s, %s::json, %s::numeric, %s::numeric)")

  • asyncpg version: v0.23.0
  • PostgreSQL version: 13.3
  • Do you use a PostgreSQL SaaS? No
  • Python version: 3.8.9 (Pyenv)
  • Platform: Debian buster (Docker)
  • Do you use pgbouncer?: No
  • Did you install asyncpg with pip?: Yes
  • If you built asyncpg locally, which version of Cython did you use?: No
  • Can the issue be reproduced under both asyncio and
    uvloop?
    : 🤷‍♂️

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

まず、指定されたバージョンと引数を使って、提供された PostgreSQL UPDATE と asyncpg executemany の例を再現します。データベースエラーを asyncpg の executemany に関するドキュメント化された動作と比較し、ライブラリの変更が求められているかどうかを判断します。完了とは、asyncpg の不具合が確認されるか、SQL をユーザーが変更する必要があることが明確になることです。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
postgresql, python
領域
databases
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
20/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。