Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como chamar o procedimento armazenado do MySQL em Python


Este artigo mostrará um exemplo sobre como chamar o procedimento armazenado do MySQL em python. Ele usará o python mysql-connector-python biblioteca e o python pymysql biblioteca.


1. Chame o procedimento armazenado do MySQL nas etapas do Python.

  1. Crie dois procedimentos armazenados do MySQL usando o código-fonte abaixo.
  2. Procedimento armazenado do 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. Procedimento armazenado do 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;
  4. Verifique se o python mysql-connector-python biblioteca e o python pymysql biblioteca foi instalada em seu ambiente python.


    $ pip show mysql-connector-pythonName:mysql-connector-pythonVersion:8.0.25Resumo:Driver MySQL escrito em PythonHome-page:http://dev.mysql.com/doc/connector-python/en/index. htmlAutor:Oracle e/ou suas afiliadas E-mail do autor:UNKNOWNLlicença:GNU GPLv2 (com exceção de licença FOSS)Local:/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packagesRequires:protobufRequired-by:**************************************************** *****************************************$ pip show pymysqlName:PyMySQLVersion:1.0. 2Resumo:Pure Python MySQL DriverPágina inicial:https://github.com/PyMySQL/PyMySQL/Autor:yutaka.matsubaraAuthor-email:[email protected]:"MIT"Location:/Library/Frameworks/Python.framework/Versions /3.7/lib/python3.7/site-packagesRequires:Requerido por:
  5. Se o python mysql-connector-python e o pymysql  biblioteca não está instalada em seu ambiente python, você pode executar o comando pip install pymysql ou pip install mysql-connector-python  para instalá-los.
  6. Chamar o procedimento armazenado do MySQL use python mysql-connector-python código-fonte de exemplo de módulo.
    importar mysql.connector# obter 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(usuário=usuário, senha=senha, host=host, porta=porta, banco de dados=banco de dados, use_unicode=use_unicode) return conn# fecha a conexão mysql. def close_mysql_connection(conn):se conn não for None:conn.close() conn =None # chama o procedimento armazenado mysql. 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. Abaixo está a saída do exemplo acima.
    (5, 6, 11)5611(5, 6, 30)5630
  8. Se você quiser usar o python pymysql módulo para chamar o procedimento armazenado MySQL, a única diferença é como obter o objeto de conexão do banco de dados MySQL, quando você obtém o objeto de conexão do banco de dados MySQL, use o pymysql módulo, você pode chamar o acima def call_stored_procedure(conn, stored_procedure_name): função para chamar o procedimento armazenado do MySQL também.
  9. Abaixo está o código-fonte que pode obter o objeto de conexão do banco de dados MySQL use python pymsql.
    de pymysql import connect, cursors# obtenha 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 # fecha a conexão mysql. def close_mysql_connection(conn):se conn não for Nenhum:conn.close()