1

Pythonでcursor.executeコマンドに渡す前に、 SQL入力を適切にサニタイズする方法はありますか? 次のような構成を作成できることになっていることを知っています。

cursor.execute("insert into Attendees values (?, ?, ?)", (name, seminar, paid) )

これを適切に行うには、ODBC ドライバー (4D V11) と pyodbc では機能しません。

具体的には、上記の形式を使用して INSERT ステートメントを記述しようとしています。コードを実行すると、レコードが挿入されますが、結果のレコードには数値変数のみが入力され、文字列は空白になります。ODBC ドライバー (および明らかにデータベース) を pqodbc に切り替え、Postgresql データベースを同じように設定すると (少なくとも挿入しようとしているフィールドについては)、同じコードが完全に実行されます。これは、問題が Python ではなく 4D ドライバーにあることを意味します。とはいえ、4D ドライバーがすぐに修正される可能性は低いので、他の回避策を探しています。助言がありますか?ありがとう

4

1 に答える 1

0

残念ながら、SQLに似た方言がたくさんあるため、サニタイズを実現する一貫した方法はありません。そのため、優れたドライバーは消毒施設を輸出する必要があります。

Pythonには優れた文字列処理関数のセットがあるため、質問のコメントで示唆されているように、特定のケースを修正するのは非常に簡単です。

これを実装しているときにできる素晴らしいことは、いくつかのドライバーのエスケープシステムを調べることです。これにはいくつかの便利なトリックが含まれている可能性があります;-)

ハッピーハッキング!

于 2012-12-14T11:29:53.737 に答える