備考録です。
Qtが提供する(Community版windows用ではそもそもdll形式では提供が無い。今もそうでしょうか。) qsqlpsql.dllをWindowsで利用する事一度も成功しませんでした。(そういうスキルの者だとご理解下さい。)
今回、PySide2を導入したところ、
AppData/Local/Programs/Python/Python37/Lib/site-packages/PySide2/plugins/sqldrivers
内に
qsqlite.dll
qsqlodbc.dll
qsqlpsql.dll
があるのを見つけてこれは!使えるのではと。
wslの file qsqlpsql.dll で
qsqlpsql.dll: PE32+ executable (DLL) (GUI) x86-64, for MS Windows
で64bit版である(らしい)ことを確認して、postgresql.orgよりpsqlodbc_11_01_0000-x64.zip
をダウンロード。面倒だし全く理解できないので、解凍してできた全てのファイルを pythonスクリプトと同一ファルダーにコピー、加えて sqldrivers内のqsqlpsql.dllもコピーして、
test.py
import sys
from PySide2.QtSql import QSqlDatabase
print (sys.path)
db = QSqlDatabase.addDatabase("QPSQL")
db.setHostName("hostname")
db.setDatabaseName("dbname")
db.setUserName("username")
db.setPassword("password")
print( db.open() )
結果
WARNING: nonstandard use of \\ in a string literal
LINE 1: SELECT '\\' x
^
HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
True
WARNINGはQtのpsqldriverが接続する際、サーバー側が必ず出力するものなのでむしろ歓迎。
最終行 True ですから接続成功の模様。
なぜ、スクリプトと同一フォルダーで無いと失敗するのかなど不明ですが、なにより接続する事が大事なのでそこはいいとして。
psycopg2 で、mac windows 双方で接続テストできていたのですが、これでQtの中でdb接続まで完結できるかもしれません。