Python pymysql是否能执行在一个字符串里面的多句SQL

我们都知道pymysql是可以执行SQL的,但是把多句SQL写在一个字符串里,pymysql能否执行呢?
假设变量如下

sql = "select '1';select '2'"

我们看看能否正常执行


测试

按照常规流程开始测试

import pymysql 
db = pymysql.connect(
	host = '10.250.90.117',
	port = 3306,
	user = 'danzhao',
	passwd = 'danzhao',
	db = 'danzhao'
)
cs = db.cursor()

sql = "select '1';select '2'"
cs.execute(sql)	# 执行SQL
data = cs.fetchall()

结果却是…
报错了
报错信息如下

ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select '2'' at line 1")

这个提示是syntax,也就是语法错误的意思


结论

pymysql不能执行一个字符串里的多句SQL,会报错


处理方案

如果可能出现一个字符串里多句SQL,建议方案如下

  1. 如果可以操作字符串,则改写成可循环元素形式然后循环
    例如上面的sql变量改成
sqlList = [
	"select '1'",
	"select '2'"
]
data = []
for sql in sqlList:
	cs.execute(sql)
	data.append(cs.fetchall())
  1. 如果不太方便操作字符串,建议加split以转换成列表然后循环
sqlList = sql.split(';')
data = []
for sql in sqlList:
	cs.execute(sql)
	data.append(cs.fetchall())
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
PyMySQL一个用于Python编程语言的纯Python MySQL客户端库。它实现了Python DB API v2.0规范,并提供了一个简单而直观的接口,用于与MySQL数据库进行交互。 PyMySQL的特点包括: 1. 纯Python实现:PyMySQL完全由Python编写,不依赖于任何其他的C库或驱动程序,因此可以在几乎所有的Python环境中使用。 2. 兼容性:PyMySQLPython DB API v2.0规范兼容,这意味着你可以使用标准的数据库API方法来执行查询、插入、更新和删除等操作。 3. 支持多种连接方式:PyMySQL支持多种连接方式,包括TCP/IP连接、Unix域套接字连接和SSL/TLS加密连接。 4. 支持事务:PyMySQL提供了事务支持,你可以使用begin()、commit()和rollback()方法来管理事务。 5. 支持多种数据类型:PyMySQL支持多种MySQL数据类型,包括整数、浮点数、字符串、日期时间、二进制数据等。 6. 支持预处理语句:PyMySQL支持预处理语句,可以提高执行查询的效率,并防止SQL注入攻击。 使用PyMySQL连接MySQL数据库的基本步骤如下: 1. 安装PyMySQL库:可以使用pip命令来安装PyMySQL库,例如:pip install PyMySQL。 2. 导入PyMySQL模块:在Python代码中导入PyMySQL模块,例如:import pymysql。 3. 建立数据库连接:使用connect()方法建立与MySQL数据库的连接,指定主机、端口、用户名、密码和数据库等参数。 4. 创建游标对象:使用cursor()方法创建一个游标对象,用于执行SQL语句。 5. 执行SQL语句:使用execute()方法执行SQL语句,可以是查询语句、插入语句、更新语句或删除语句等。 6. 获取执行结果:使用fetchone()、fetchall()等方法获取执行结果。 7. 关闭游标和连接:使用close()方法关闭游标和连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

但老师

要是看起来爽 求打赏一耳光

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值