python调用存储过程
① python 连接mysql数据库,存储过程内创建临时表,查询不到数据
Python是编程语言,MySQL是数据库,它们是两种不同的技术;要想使Python操作回MySQL数据库需要使用驱动。答这里选用PyMySQL驱动。
当然,最简单的安装方式还是使用pip命令。
> pip install PyMySQL
把install 换成show命令,查看PyMySQL安装是否成功。
② 谁知道Python如何对MySQL存储过程进行调用
环境:1.MySQL5.0 或者以上支持MySQL存储过程的版本2.安装MySQL-python,目前支持到2.x步骤:一.数据库准备1.建立表view sourceprint?1 CREATE TABLE `` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `sm_accountName` VARCHAR(100) COLLATE gbk_chinese_ci NOT NULL DEFAULT '', `sm_password` TEXT COLLATE gbk_chinese_ci NOT NULL, `sm_onlineTime` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `accountNameIndex` (`sm_accountName`) )ENGINE=InnoDB 2.建立MySQL存储过程view sourceprint?01 CREATE PROCEDURE `proctest`(IN i_id BIGINT, IN i_onlinetime BIGINT, OUT o_accname VARCHAR(30), OUT o_accpwd VARCHAR(50)) 02 NOT DETERMINISTIC 03 CONTAINS SQL 04 SQL SECURITY DEFINER 05 COMMENT '' 06 BEGIN 07 select sm_accountName,sm_password 08 into o_accname,o_accpwd 09 from `tbl_Account` where id=i_id and sm_onlineTime=i_onlinetime limit 1; 10 END; 3.插入部分数据view sourceprint?1 INSERT INTO `Account` (`id`, `sm_accountName`, `sm_password`, `sm_onlineTime`) VALUES 2 (1, 'luoshulin', 'asdfsdf', 0), 3 (2, 'test', '1', 0), 4 (3, 'adsfasd', 'asdf', 1); 到这里数据库相关内容就准备好了接下去开始写python脚本二.python脚本view sourceprint?01 #!/usr/bin/env python 02 # -*- coding: utf8 -*- 03 import MySQLdb 04 import time 05 import os, sys, string 06 def CallProc(id,onlinetime): 07 '''调用MySQL存储过程,08 输入参数:编号,在线时间,输出:帐号,密码;09 使用输出参数方式'''10 accname=''11 accpwd=''12 conn = MySQLdb.connect(host='localhost',user='root',passwd='111111',db='ceshi')13 cur =conn.cursor()14 cur.callproc('proctest',(id,onlinetime,accname,accpwd))15 cur.execute('select @_proctest_2,@_proctest_3')16 data=cur.fetchall()17 if data:18 for rec in data:19 accname=rec[0]20 accpwd=rec[1]21 cur.close()22 conn.close();23 return accname,accpwd24 def CallProct(id,onlinetime):25 '''调用MySQL存储过程,26 输入参数:编号,在线时间,输出:帐号源码天空,密码;27 使用select返回记录方式'''28 accname=''29 accpwd=''30 conn = MySQLdb.connect(host='localhost',user='root',passwd='111111',db='ceshi')31 cur =conn.cursor()32 cur.nextset()33 cur.execute('call ptest(%s,%s)',(id,onlinetime))34 data=cur.fetchall()35 if data:36 for rec in data:37 accname=rec[0]38 accpwd=rec[1]39 cur.close()40 conn.close();41 return accname,accpwd42 name,pwd=CallProct(1,0)43 print name,pwd三.测试将python脚本保存为 并执行可以看到结果view sourceprint?1 [root@redhat-dev python]# python pycallproc.py2 luoshulin asdfsdf测试使用的是select返回记录的方式,对于使用输出参数返回结果情况也是一样的。
③ Python如何使用cx_Oracle调用存储过程,入参为自定义参数
table of number(10) 你的类型不就是一个数字类型么
cursor.callproc("sp_get_data",[???,cur]) 这里你直接传递专一个整型 试属试 比如 cursor.callproc("sp_get_data",[10,cur])
④ python使用cx_oracle调用存储过程的问题
zs = cursor.var(cx_Oracle.CURSOR)
cursor.callproc('proc_query_news',[zs])
第二个参数是游标啊,其他参数放后面,没有可以省略
⑤ python 如何执行复杂sqlserver语句
很简单
将以上语句封装为存储过程
再使用python调用即可
⑥ python中 pyodbc 如何调用储存过程
dbapi支持存储过程,但是不是所有的库都实现了这个功能。我现在用的pyodbc就没有实现,但是可以直接写pl/sql,我现在是在plsql里调用存过 差不多这样。
execute(“”“
declare
v_pltitemtwms_pltitem%rowtype;
begin
调用存过
end;”“”)
⑦ 如何使用python调用mysql存储过程
mysql 存储过程是用 call 调用,函数是用 select 调用。直接写成语句就ok.如 过程名为 abcabc,那么调用就是 cal abcabc;