わかったようなわからないようなでいまいち整理がついていないので、理解が正しいか教えてください。
パラメータ付きSQLクエリの、変数指定の仕方についてです。
・JDBC
JDBCでは、どのRDB製品を使う場合も "?"(名前なしパラメータ)もしくは ":name"(名前付きパラメータ)で指定できる、これはあっていますよね。
・Python
ドライバとしてcx-oracleを使ってOracleを叩く場合、":name"(名前付きパラメータ)が使えます。"?"のような名前なしパラメータは指定できませんので、適当な名前の名前付きパラメータを使います。
ドライバとしてpsycopg2を使ってPostgresを叩く場合、"%s"(名前なしパラメータ)と "%(name)s"(名前付きパラメータ)が使えます。
さて、Pythonの場合だとRDB製品によってパラメータの埋め込み方が全然違っています。この違いを生んでいるのは
●OracleとPostgresの仕様の違い
●ドライバ同士の仕様の違い
のどちらなのでしょう?
パラメータ埋め込みの仕組みは各RDBが提供している通信インターフェースに依存していて、そのせいでPythonプログラミングレベルに違いが現れているのか、それとも単にそれぞれのドライバの設計者の気まぐれによって違いが出ているものなのか(つまりDB APIの規定がゆるゆるすぎるPythonが悪いのか!)。
後者なのかな? と思っていますが、そもそもパラメータ付きクエリをRDBに送り込むときはどういう形式の通信が行われているのかあたりをまったく把握していないので確証が持てていません。詳しい方ご教示いただけますでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。