sql >> Database >  >> RDS >> Mysql

Hoe de MySQL-opgeslagen procedure in Python aan te roepen?

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.

  1. Maak twee MySQL-opgeslagen procedures met de onderstaande broncode.
  2. 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 ;
    
  3. 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 ;
  4. 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: 
    
  5. 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.
  6. 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)
  7. Hieronder staat de bovenstaande voorbeelduitvoer.
    (5, 6, 11)
    5
    6
    11
    (5, 6, 30)
    5
    6
    30
    
  8. 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.
  9. 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()

  1. Een database herstellen vanuit C#

  2. SQL Server 2017 Stap voor stap installatie -2

  3. Variabelen op dezelfde regel declareren en initialiseren in VBA

  4. Hoe Atan2() werkt in PostgreSQL