相关文章推荐
鬼畜的水龙头  ·  Process.MainWindowHand ...·  4 月前    · 
性感的毛衣  ·  用于Python3.4的Python MSS·  2 年前    · 
豪气的冰淇淋  ·  com.amazonaws.SdkClien ...·  2 年前    · 
# cursors = conn.cursor(cursor=pymysql.cursors.DictCursor) cursors = conn . cursor ( cursor = None )

cursor.callproc()

  • 无参的时候,不管游标类型,都是一个空元组

  • 有参的时候,是一个有值的元组或者列表(看是用什么包裹传递的参数)

res = cursors.callproc(procname='p1')
print(res)
# 关于返回,目前实验来看,只会返回存储过程遇到的第一个select语句的结果。
print(cursors.fetchall())
print(cursors.fetchall())  # 空
print(cursors.fetchall())  # 好像没有commit也成功修改了,并且后面的select并不会返回
print(cursors.fetchall())
# args必须为可迭代结构
rows = cursors.callproc(procname='p1', args=[4, 5])
# 如果args是(4, 5),就返回(4, 5);如果是[4, 5],就返回[4, 5]
rows = cursors.callproc(procname='p2', args=(4, ))
print(rows)
print(cursors.fetchall())

获取返回结果

cursors.execute(query='select @_p1_0, @_p1_1, @_p1_2;')  # python还可以拿in的值
  • 访问一个不存在的存储过程报错
  • 访问一个不存在的参数,那个变量返回None
print(cursors.fetchall())  # DictCursor: [{'@_p2_0': 1, '@_p2_1': 101, '@_p2_2': None}]
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""pymysql中使用存储过程
import pymysql
conn = pymysql.connect(
    user='root',
    password='',
    host='localhost',
    port=3306,
    database='hardy2_db',
    charset='utf8mb4'
# cursors = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursors = conn.cursor(cursor=None)
# 无参调用:
# ======================================
# 无参的时候,不管游标类型,都是一个空元组
# 有参的时候,是一个有值的元组或者列表(看是用什么包裹传递的参数)
# ======================================
# res = cursors.callproc(procname='p1')
# print(res)
# 关于返回,目前实验来看,只会返回存储过程遇到的第一个select语句的结果。
# print(cursors.fetchall())
# print(cursors.fetchall())  # 空
# print(cursors.fetchall())  # 好像没有commit也成功修改了,并且后面的select并不会返回
# print(cursors.fetchall())
# 有参调用1:
# args必须为可迭代结构
# rows = cursors.callproc(procname='p1', args=[4, 5])
# 如果args是(4, 5),就返回(4, 5);如果是[4, 5],就返回[4, 5]
# rows = cursors.callproc(procname='p2', args=(4, ))
# print(rows)
# print(cursors.fetchall())
# 有参调用2:
# rows = cursors.callproc('p2', (1, 5))
rows = cursors.callproc(procname='p1', args=[1, 5])
cursors.execute(query='select @_p1_0, @_p1_1, @_p1_2;')  # python还可以拿in的值
# 访问一个不存在的存储过程报错
# 访问一个不存在的参数,那个变量返回None
print(cursors.fetchall())  # DictCursor: [{'@_p2_0': 1, '@_p2_1': 101, '@_p2_2': None}]
# ((1, 101, None),)
cursors.close()
conn.close()
                    目录起步存储过程无参调用有参调用示例代码起步#!/usr/bin/python3# -*- coding: utf-8 -*-"""pymysql中使用存储过程"""import pymysqlconn = pymysql.connect(    user='root',    password='',    host='localhost',    port=330...
				
使用Python处理MySQL逻辑时如果把SQL语句直接写在字符串调用多次运行需要多次编译而且代码维护难度增加,MySQL存储过程将SQL逻辑封装解决这个问题,下面记录一下测试效果。 创建测试存储过程 delimiter $$ DROP PROCEDURE IF EXISTS `add_person`$$ CREATE PROCEDURE `add_person`(IN p_id in...
登陆:mysql -uroot -h127.0.0.1 -P3306 -p mysql -uroot -p(本机不用写host) 退出mysql:ctrl+z+回车,或者exit 端口号默认是3306,但是可以通过安装目录下的配置文件修改。 使用流程 引用API模块 获取与数据库的连接 执行sql语句与存储过程 关闭数据库连接 安装pymysql python3MySQL 进行交互编程需要安装 pymysql 库,故首先使用如下命令安装pymysql –>pip ins import pymysql db = pymysql.connect(host='rm-******.mysql.rds.aliyuncs.com', port=3306, user='root', password='******', db='***') cursor = db.cursor(...
Python可以使用pandas库来读取Excel文件,然后使用MySQLdb或pymysql库将数据导入到MySQL数据库。具体步骤如下: 1. 安装pandas、MySQLdb或pymysql库。 2. 使用pandas的read_excel函数读取Excel文件,将数据存储到DataFrame对象。 3. 使用MySQLdb或pymysql库连接MySQL数据库,并创建游标对象。 4. 使用游标对象执行SQL语句,将数据插入到MySQL数据库。 示例代码如下: ```python import pandas as pd import MySQLdb # 读取Excel文件 df = pd.read_excel('data.xlsx') # 连接MySQL数据库 conn = MySQLdb.connect(host='localhost', user='root', passwd='password', db='test', charset='utf8') cursor = conn.cursor() # 将数据插入到MySQL数据库 for index, row in df.iterrows(): sql = "INSERT INTO table_name (column1, column2, column3) VALUES ('%s', '%s', '%s')" % (row['column1'], row['column2'], row['column3']) cursor.execute(sql) # 提交事务并关闭连接 conn.commit() cursor.close() conn.close() 其,data.xlsx为Excel文件名,table_name为MySQL数据库的表名,column1、column2、column3为表的列名。需要根据实际情况修改代码的参数。