Mysql
 sql >> Database >  >> RDS >> Mysql

Come chiamare la stored procedure MySQL in Python

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.

  1. Crea due stored procedure MySQL utilizzando il codice sorgente riportato di seguito.
  2. 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 ;
    
  3. 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 ;
  4. 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: 
    
  5. 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.
  6. 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)
  7. Di seguito è riportato l'output di esempio sopra.
    (5, 6, 11)
    5
    6
    11
    (5, 6, 30)
    5
    6
    30
    
  8. 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.
  9. 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()