Python を使用して MySQL でカスタム ストアド プロシージャと関数を作成する方法

WBOY
リリース: 2023-09-20 11:33:48
オリジナル
596 人が閲覧しました

Python を使用して MySQL でカスタム ストアド プロシージャと関数を作成する方法

Python を使用して MySQL でカスタム ストアド プロシージャと関数を作成する方法

MySQL は一般的に使用されるリレーショナル データベース管理システムであり、Python は強力なプログラミング言語です。 2 つを組み合わせることで、より柔軟で効率的なデータベース操作が可能になります。 MySQL のストアド プロシージャとストアド関数は、一般的に使用される操作ロジックをカプセル化し、繰り返しコードを記述するのを減らすのに役立ちます。この記事では、Python を使用してカスタム ストアド プロシージャと関数を作成する方法を、具体的なコード例とともに紹介します。

  1. 準備
    まず、Python と MySQL データベースがインストールされていて、データベースに接続できることを確認します。
  2. データベースとテーブルの作成
    サンプル データベースを使用して、カスタム ストアド プロシージャと関数の使用方法を示します。まず、「testdb」という名前のデータベースを作成し、その中に次の構造を持つ「users」という名前のテーブルを作成します。
CREATE DATABASE testdb;

USE testdb;

CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(255),
  age INT,
  email VARCHAR(255)
);
ログイン後にコピー
  1. Python コードの作成
    次に、Python コードを作成します。カスタム ストアド プロシージャと関数を作成します。まず、必要なモジュールをインポートし、データベースに接続します。
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="testdb"
)

mycursor = mydb.cursor()
ログイン後にコピー
  1. カスタム ストアド プロシージャの作成
    カスタム ストアド プロシージャの作成例を次に示します。このストアド プロシージャは、指定された年齢範囲に基づいてユーザーをクエリし、結果を返します。ストアド プロシージャの構文は次のとおりです。
def create_procedure():
  sql = """
CREATE PROCEDURE get_users_by_age(
  IN min_age INT,
  IN max_age INT
)
BEGIN
  SELECT * FROM users WHERE age >= min_age AND age <= max_age;
END
  """
  mycursor.execute(sql)
  mydb.commit()
ログイン後にコピー
  1. カスタム ストアド プロシージャの呼び出し
    ストアド プロシージャを作成した後、次のコードを使用してそれを呼び出すことができます。
  2. def call_procedure():
      mycursor.callproc("get_users_by_age", (18, 30))
      for result in mycursor.stored_results():
        for row in result.fetchall():
          print(row)
    ログイン後にコピー
    カスタム関数の作成
  1. ストアド プロシージャに加えて、カスタム関数も作成できます。以下はカスタム関数の作成例です。この関数は、指定された年齢範囲内のユーザーの数を返します。関数の構文は次のとおりです。
  2. def create_function():
      sql = """
    CREATE FUNCTION count_users_by_age(
      min_age INT,
      max_age INT
    )
    RETURNS INT
    BEGIN
      DECLARE user_count INT;
      SELECT COUNT(*) INTO user_count FROM users WHERE age >= min_age AND age <= max_age;
      RETURN user_count;
    END
      """
      mycursor.execute(sql)
      mydb.commit()
    ログイン後にコピー
    カスタム関数の呼び出し
  1. 関数を作成した後、次のコードを使用してそれを呼び出すことができます:
  2. def call_function():
      mycursor.callfunc("count_users_by_age", int, (18, 30))
    ログイン後にコピー
これまで、Python を使用して MySQL でカスタム ストアド プロシージャと関数を作成する方法を学習しました。 Python と MySQL を組み合わせることで、データベース操作をより柔軟に実行でき、コードの再利用性と保守性が向上します。

完全なコードは次のとおりです:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="testdb"
)

mycursor = mydb.cursor()

def create_procedure():
  sql = """
CREATE PROCEDURE get_users_by_age(
  IN min_age INT,
  IN max_age INT
)
BEGIN
  SELECT * FROM users WHERE age >= min_age AND age <= max_age;
END
  """
  mycursor.execute(sql)
  mydb.commit()

def call_procedure():
  mycursor.callproc("get_users_by_age", (18, 30))
  for result in mycursor.stored_results():
    for row in result.fetchall():
      print(row)

def create_function():
  sql = """
CREATE FUNCTION count_users_by_age(
  min_age INT,
  max_age INT
)
RETURNS INT
BEGIN
  DECLARE user_count INT;
  SELECT COUNT(*) INTO user_count FROM users WHERE age >= min_age AND age <= max_age;
  RETURN user_count;
END
  """
  mycursor.execute(sql)
  mydb.commit()

def call_function():
  mycursor.callfunc("count_users_by_age", int, (18, 30))

create_procedure()
call_procedure()
create_function()
call_function()
ログイン後にコピー
上記は、Python を使用して MySQL にカスタム ストアド プロシージャと関数を記述する方法です。ストアドプロシージャやストアドファンクションを合理的に活用することで、データベース操作の効率性と柔軟性を向上させ、より強力な機能を実現します。

以上がPython を使用して MySQL でカスタム ストアド プロシージャと関数を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート