この記事では、PythonでMySQLストアドプロシージャを呼び出す方法の例を示します。 Python mysql-connector-pythonの両方を使用します ライブラリとPythonpymysql ライブラリ。
1。 PythonステップでMySQLストアドプロシージャを呼び出します。
- 以下のソースコードを使用して、2つのMySQLストアドプロシージャを作成します。
- MySQLストアドプロシージャ
add_number 。 USE `dev2qa_example`; DROP procedure IF EXISTS `add_number`; DELIMITER $$ USE `dev2qa_example`$$ CREATE PROCEDURE `add_number` (a int, b int, out sum int) BEGIN set sum = a + b; END$$ DELIMITER ;
- MySQLストアドプロシージャmultiple_number 。
USE `dev2qa_example`; DROP procedure IF EXISTS `multiple_number`; DELIMITER $$ USE `dev2qa_example`$$ CREATE PROCEDURE `multiple_number` (a int, b int, out sum int) BEGIN set sum = a * b; END$$ DELIMITER ;
- python mysql-connector-pythonかどうかを確認します ライブラリとPythonpymysql ライブラリがPython環境にインストールされています。
$ pip show mysql-connector-python Name: mysql-connector-python Version: 8.0.25 Summary: MySQL driver written in Python Home-page: http://dev.mysql.com/doc/connector-python/en/index.html Author: Oracle and/or its affiliates Author-email: UNKNOWN License: GNU GPLv2 (with FOSS License Exception) Location: /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages Requires: protobuf Required-by: ******************************************************************************************* $ pip show pymysql Name: PyMySQL Version: 1.0.2 Summary: Pure Python MySQL Driver Home-page: https://github.com/PyMySQL/PyMySQL/ Author: yutaka.matsubara Author-email: [email protected] License: "MIT" Location: /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages Requires: Required-by:
- Python mysql-connector-pythonの場合 およびpymysql ライブラリがPython環境にインストールされていない場合は、コマンド pip install pymysqlを実行できます。 またはpipinstall mysql-connector-python それらをインストールします。
- MySQLストアドプロシージャを呼び出して、python mysql-connector-pythonを使用します モジュールの例のソースコード。
import mysql.connector # get mysql connection object. def open_mysql_connection(user=global_user, password=global_password, host=global_host, port=global_port, database=global_db, use_unicode=True): conn = mysql.connector.connect(user=user, password=password, host=host, port=port, database=database, use_unicode=use_unicode) return conn # close mysql connection. def close_mysql_connection(conn): if conn is not None: conn.close() conn = None # call the mysql stored procedure. def call_stored_procedure(conn, stored_procedure_name): cursor = conn.cursor() out_args = cursor.callproc(stored_procedure_name, (5, 6, 0)) print(out_args) print(out_args[0]) print(out_args[1]) print(out_args[2]) conn.commit() cursor.close() if __name__ == '__main__': conn = open_mysql_connection() call_stored_procedure(conn, 'add_number') call_stored_procedure(conn, 'multiple_number') close_mysql_connection(conn)
- 以下は上記の出力例です。
(5, 6, 11) 5 6 11 (5, 6, 30) 5 6 30
- Pythonを使用する場合pymysql MySQLストアドプロシージャを呼び出すモジュール。唯一の違いは、MySQLデータベース接続オブジェクトを取得する方法です。MySQLデータベース接続オブジェクトを取得する場合は、 pymysqlを使用します。 モジュールの場合、上記の def call_stored_procedure(conn、stored_procedure_name)を呼び出すことができます: MySQLストアドプロシージャも呼び出す関数。
- 以下は、MySQLデータベース接続オブジェクトを取得できるソースコードです。pythonpymsqlを使用します。
from pymysql import connect, cursors # get mysql connection object. def open_mysql_connection(host='127.0.0.1', user='jerry', password='jerry', db='dev2qa_example', charset='utf8', cursorclass=cursors.DictCursor): conn = connect(host=host, user=user, password=password, db=db, charset=charset, cursorclass=cursorclass) return conn # close mysql connection. def close_mysql_connection(conn): if conn is not None: conn.close()