複数の大文字と小文字を区別する列を使用して、python の pgdb を使用してクエリを実行する際に問題があります。ほとんどのクエリの結果は python リストを返しますが、大文字と小文字を区別する複数の列を指定するテーブルに対してクエリを発行すると、結果はstring
.
boolean
たとえば、次の名前の 3 つの大文字と小文字を区別する列を持つ PostgreSQL データベースのテーブルがあります。
(colA, colB, debug)
複数の列を選択することに興味がある場合はstring
、クエリから生の結果を受け取ります。
query = 'SELECT ("colA", debug) FROM my_table;"
また
query = 'SELECT ("colA", "colB") FROM my_table;"
クエリは次を返します。
cursor.execute(query)
cursor.fetchone()
['(f,f)']
次のクエリを発行します。
query = "SELECT * FROM my_table;"
cursor.execute(query)
cursor.fetchone()
予想される python リストが得られます。
[False, False, False]
1 つの列を引用符で囲んで指定すると、結果が期待されます。
query = 'SELECT ("colA") FROM my_table;'
cursor.execute(query)
cursor.fetchone()
[False]
string
大文字と小文字を区別する複数の列を選択したときにraw を受け取る理由を理解するために、誰かが私を正しい方向に向けてくれることを願っています。問題を解決するために複数のクエリを発行することもできますSELECT *
が、堅牢なコードを維持し、テーブルへの将来の変更から身を守るために、列を指定することをお勧めします。