mysql begin and_mysql中 begin and使用(一次执行多行sql)

转载:

原来是因为mysql解释器根据‘;’来结束读取命令执行命令,在多个‘;’号时,解释器不知到在哪一句结束读取命令执行命令,而delimiter的作用是,将sql结束读取命令并执行命令的标志,替换成delimiter后的标志(在本文是‘//’),这样只有当‘//’出现之后,mysql解释器才会执行这段语句。

delimiter //

create procedure search_sc1()

begin

insert into test1 values (0,'张三0','0');insert into test1 values (1,'张三1','1');insert into test1 values (2,'张三2','2');insert into test1 values (3,'张三3','3');insert into test1 values (4,'张三4','4');

end //

存储过程的查看和调用:

select `name` from mysql.proc where db = 'test_docker' and `type` = 'PROCEDURE';

call search_sc1();

是可以在mysql客户端执行了,但是使用python连接mysql 上面的语句不能执行,待解决-----------------------------------

python操作mysql数据库的代码如下:

先安装 pip install pymysql

本来想直接用 游标一次执行多行sql,创建测试数据,发现不行,只能直接在mysql执行存储过程,暂时未找到更好的方法

import pymysql

conn = pymysql.connect(host='192.168.138.134',port=13307, user='root',password='root',database='test_docker',charset='utf8')

curs = conn.cursor()

# 利用存储过程一次执行多行sql

# '''

# delimiter //

# create procedure search_sc()

# begin

# insert into test1 values (0,'张三0','0');insert into test1 values (1,'张三1','1');insert into test1 values (2,'张三2','2');

# end //

# '''

# sqlstr = '''delimiter //

# create procedure search_sc4()

# begin

# '''

sqlstr = ''

for x in range(1):

sqlstr += "insert into test1 values (%s,'张三%s','%s');" % (x,x,x)

x = x + 1

# sqlstr += '''

# end //'''

print(sqlstr)

res = curs.execute(sqlstr)

conn.commit()

print(res)

从execl读取数据,更新数据库对应数据

import xlrd

workBook = xlrd.open_workbook("E:\\tools\\Python\\test\\update1.xlsx")

# 得到整个表格, sheets[0]选择第一个shell

sheets0 = workBook.sheets()[0]

print(sheets0)

# 行数

nrows = sheets0.nrows

print(nrows)

# 列数

ncols = sheets0.ncols

print(ncols)

for x in range(nrows-1):

# 第x行的第一个字段值

row_value_id = sheets0.row_values(x + 1)[0]

row_value_name = sheets0.row_values(x + 1)[1]

print(x + 1,'---',row_value_id,'---',row_value_name)

sqlstr = "update test1 set name = '"+str(row_value_name)+"' where id = '"+str(row_value_id)+"';"

print(sqlstr)

下载pandas 报错  ---预测是因为ssl导致的错误,百度未果

raise ReadTimeoutError(self._pool, None, "Read timed out.")

pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值