Questo articolo ti mostrerà un esempio su come chiamare la stored procedure MySQL in Python. Utilizzerà sia python mysql-connector-python libreria e python pymysql biblioteca.
1. Chiama MySQL Stored Procedure in Python Steps.
- Crea due stored procedure MySQL utilizzando il codice sorgente riportato di seguito.
- Procedura archiviata 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 ;
- Procedura archiviata MySQL numero_multiplo .
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 ;
- Verifica se python mysql-connector-python libreria e python pymysql libreria è stata installata nel tuo ambiente 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:
- Se il python mysql-connector-python e pymysql libreria non è installata nel tuo ambiente python, puoi eseguire il comando pip install pymysql o pip install mysql-connector-python per installarli.
- Chiama la procedura memorizzata MySQL utilizza python mysql-connector-python codice sorgente di esempio del modulo.
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)
- Di seguito è riportato l'output di esempio sopra.
(5, 6, 11) 5 6 11 (5, 6, 30) 5 6 30
- Se vuoi usare python pymysql modulo per chiamare la procedura memorizzata MySQL, l'unica differenza è come ottenere l'oggetto di connessione al database MySQL, quando ottieni l'oggetto di connessione al database MySQL usa pymysql modulo, puoi chiamare il precedente def call_stored_procedure(conn, stored_procedure_name): funzione per chiamare anche la stored procedure MySQL.
- Di seguito è riportato il codice sorgente che può ottenere l'oggetto di connessione al database MySQL, utilizzare 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()