操作哪个数据库,就把存储过程建到那个数据库
例如 现在use db2;
应该把存储过程 建立到db2数据库里
创建无参存储过程
delimiter // # 设置mysql结束符合为//
create procedure p1() # 创建程序固定procedure 和p1是存储过程名字
BEGIN
select * from db2.teacher; # sql语句
end //
delimiter ;
查看创建的存储过程
mysql> show create procedure p1G; *************************** 1. row *************************** Procedure: p1 sql_mode: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`() BEGIN select * from db2.teacher; end character_set_client: utf8 collation_connection: utf8_general_ci Database Collation: utf8_general_ci 1 row in set (0.00 sec) ERROR: No query specified
调用存储过程
#在mysql中调用
call 存储过程名字;
mysql> call p1(); +-----+-----------------+ | tid | tname | +-----+-----------------+ | 1 | 张磊老师 | | 2 | 李平老师 | | 3 | 刘海燕老师 | | 4 | 朱云海老师 | +-----+-----------------+ 5 rows in set (0.18 sec) Query OK, 0 rows affected (0.18 sec)
#在python中基于pymysql调用
调用存储过程 callproc('') 里面是存储过程名字
cursor.callproc('p1') print(cursor.fetchall())
import pymysql mysql_host = '192.168.0.108' port = 3306 mysql_user = 'root' mysql_pwd = '123' encoding = 'utf8' # 建立 连接mysql服务端 conn = pymysql.connect( host=mysql_host, # mysql服务端ip port=port, # mysql端口 user=mysql_user, # mysql 账号 password=mysql_pwd, # mysql服务端密码 db='db2', # 操作的库 charset=encoding # 读取字符串编码 ) # 拿到游标对象 cur = conn.cursor(pymysql.cursors.DictCursor) ''' 游标是给mysql提交命令的接口 mysql> 把sql语句传递到这里 ''' # 执行sql语句 cur.callproc('p1') # 打印查询结果 print(cur.fetchall()) # 执行完sql语句要关闭游标和mysql连接 cur.close() conn.close() ''' [{'tid': 1, 'tname': '张磊老师'}, {'tid': 2, 'tname': '李平老师'}, {'tid': 3, 'tname': '刘海燕老师'}, {'tid': 4, 'tname': '朱云海老师'}] '''