mysqlコネクタとpythonのようにクエリを書く方法は?私はSQLインジェクションを避けようとしており、ORMの使用はオプションではありません。pythonとmysqlコネクタのようなものを使ってクエリを書く
param = 'bob'
select_query = mysql_conn.query_db("select * from table_one where col_name like '%?%' order by id asc limit 5", param)
クエリが実行されても、同じ結果が得られます。私は何も得られないはずです。
以下のクエリを使用すると、エラーが発生します。
select_query = mysql_conn.query_db("select * from table_one where col_name like %s order by id asc limit 5", param)
SQL構文に誤りがあります。 に渡されたクエリ文字列内の任意のリテラルパーセント記号を実行することをライン1
これはうまくいきました。ありがとう。私は別の質問があります。 paramをタプルとして設定し、クエリとタプルを接続クラスに送ります。しかしそれは失敗する?接続クラスのタプルとしてparamを設定する必要があります。 get_connectioned私の接続クラスの – user3525290
のparam =(のRequest.Form [ 'TXT']、) <クラスのタプル '> クラス(): デフquery_db(自己、クエリ、PARAM): self.curr.execute(クエリ、(パラメータ) 戻りself.curr は、上記に障害が発生した。しかし、私は次の操作を行う場合、それは動作します のparam =のRequest.Form [ 'TXT'] get_connectionedクラス():。。 デフquery_db(自己、クエリ、param): self.curr.execute( "%{}%"形式(param))) return self.curr なぜクラス作業でタプルを作るのですか? 〜でタプルは失敗しますか? –
user3525290
@ user3525290このようなコードでコメントするのは難しいです。最初のものがそのままパラメータを使用し、2番目のパラメータがワイルドカードで囲まれている点を除いて、ほぼ同じことが行われます。 – mata