ホームページ  >  記事  >  データベース  >  Python の MySQL でプリペアドステートメントを使用する方法?

Python の MySQL でプリペアドステートメントを使用する方法?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-08 07:48:01281ブラウズ

How to Use Prepared Statements with MySQL in Python?

Python での MySQL でのプリペアド ステートメントの使用: 詳細な説明

構文の理解

MySQL のプリペアド ステートメントは、クエリをより効率的かつ安全に実行する方法を提供します。クエリの準備フェーズを実行フェーズから分離します。プリペアド ステートメントを使用する場合は、潜在的なエラーを回避するために正しい構文に従うことが重要です。

エラーの説明

コード スニペットでは、以下を使用しているため、エラーが発生します。プリペアドステートメントの構文が正しくありません。問題の内訳は次のとおりです。

sql = "PREPARE stmt FROM ' INSERT INTO {} (date, time, tag, power) VALUES (?, ?, ?, ?)'".format(self.db_scan_table)
self.cursor.execute(sql)

この行は、SQL 文字列を使用して「stmt」という名前のステートメントを準備しようとします。ただし、Python の MySQLdb モジュールは、「PREPARE」および「EXECUTE」コマンドを直接サポートしていません。

MySQLdb を使用した解決策

MySQLdb で準備されたステートメントを使用するには、以下が必要です。少し異なるアプローチを使用するには:

sql = ('INSERT INTO {} (date, time, tag, power) VALUES (%s, %s, %s, %s)'.format(self.db_scan_table))

この行は、次の SQL 文字列を作成します。挿入される値のプレースホルダー (「?」文字)。

self.cursor.execute(sql, (d, t, tag, power))

この行は、タプル内の指定された値を使用して準備されたステートメントを実行します。 MySQLdb は自動的にステートメントを準備し、実行を処理します。

MySQL Connector/Python の使用

Python の MySQL で準備されたステートメントを使用するより現代的で効率的な方法は、次のとおりです。 MySQL コネクタ/Python。カーソル ファクトリで明示的な "prepare=True" オプションを提供します。

cursor = conn.cursor(prepared=True)

sql = ('INSERT INTO {} (date, time, tag, power) VALUES (%s, %s, %s, %s)'.format(self.db_scan_table))

cursor.execute(sql, (d, t, tag, power))

このアプローチにより、準備されたステートメントをより詳細に制御でき、パフォーマンスとセキュリティの向上のために推奨されます。

以上がPython の MySQL でプリペアドステートメントを使用する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。