SELECT * FROM a, b WHERE ...
Mysqlでは、クエリの結果に重複する列名を含めることができます。したがって、ターミナルでは、上記のクエリを使用して列名のプレフィックスが付けられることはありません。
ただし、PythonでDictCursorを使用してmysqldbを使用しています。結果は、列名がキーである辞書のリストです。場合によっては、dictカーソルが自動的に列名の前にテーブル名を付けます。私の知る限り、これは2つのあいまいな列名の2番目に対して行われますが、2番目の値が一意である場合に限ります。とにかく、カーソルにすべてのキーの前にテーブル名を付けるように強制したいと思います。
fetch.row()関数のmysqldbドキュメントから...
2番目のパラメーター(how)は、行をどのように表現するかを示します。デフォルトではゼロです。つまり、タプルとして返されます。how = 1は、キーが列名であるディクショナリとして返すか、同じ名前の列が2つある場合はtable.columnを返します(たとえば、結合から)。how = 2は、キーが常にtable.columnであることを除いて、how=1と同じことを意味します。これは、古いMysqldbモジュールとの互換性のためです。
したがって、実行可能に見えますが、fetch.row()関数を直接使用していません...問題は、mysqldbdictカーソルが行をフェッチするときに常にhow=2を使用するようにするにはどうすればよいですか?