Dit artikel laat u een voorbeeld zien van het aanroepen van de MySQL-opgeslagen procedure in python. Het gebruikt zowel de python mysql-connector-python bibliotheek en de python pymysql bibliotheek.
1. Roep MySQL-opgeslagen procedure aan in Python-stappen.
- Maak twee MySQL-opgeslagen procedures met de onderstaande broncode.
- Opgeslagen MySQL-procedure 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 ;
- Opgeslagen MySQL-procedure 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 ;
- Controleer of de python mysql-connector-python bibliotheek en de python pymysql bibliotheek is geïnstalleerd op uw python-omgeving.
$ 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:
- Als de python mysql-connector-python en de pymysql bibliotheek niet is geïnstalleerd in uw python-omgeving, kunt u het commando pip install pymysql uitvoeren of pip install mysql-connector-python om ze te installeren.
- Bel MySQL-opgeslagen procedure aan met python mysql-connector-python module voorbeeld broncode.
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)
- Hieronder staat de bovenstaande voorbeelduitvoer.
(5, 6, 11) 5 6 11 (5, 6, 30) 5 6 30
- Als je de python pymysql . wilt gebruiken module om de MySQL-opgeslagen procedure aan te roepen, het enige verschil is hoe u het MySQL-databaseverbindingsobject krijgt, wanneer u het MySQL-databaseverbindingsobject krijgt, gebruikt u de pymysql module, kunt u de bovenstaande def call_stored_procedure(conn, opgeslagen_procedure_name): aanroepen functie om ook de MySQL-opgeslagen procedure aan te roepen.
- Hieronder staat de broncode die MySQL-databaseverbindingsobject kan ophalen, gebruik python pymsql.
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()