2

PythonモジュールMySQLdbを使用してSELECTまたはINSERTクエリでインジェクション攻撃を回避する適切な方法は次のとおりです。

cursor.execute("SELECT spam, eggs, sausage FROM breakfast WHERE price < %s", (max_price,))

ただし、CREATE クエリで同じルールを適用しようとすると、エラーが返されます。私のコード:

cursor.execute("CREATE DATABASE %s;", ("test",))

構文エラーが報告されます:

_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''test'' at line 1")

クエリがデータベース名に一重引用符を追加し、Mysql が CREATE クエリでそれを許可しないためだと思われますか?

データベース名またはテーブル名が固定されていない場合、python MySQLdb モジュールを使用してデータベースまたはテーブルを作成する適切な方法は何ですか?

4

1 に答える 1

0

角括弧を試してください。

cursor.execute("CREATE DATABASE %s;", ["test"])
于 2015-09-18T21:18:41.530 に答える