Python pymysql是否能执行在一个字符串里面的多句SQL
Posted 但老师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,建议方案如下
- 如果可以操作字符串,则改写成可循环元素形式然后循环
例如上面的sql
变量改成
sqlList = [
"select '1'",
"select '2'"
]
data = []
for sql in sqlList:
cs.execute(sql)
data.append(cs.fetchall())
- 如果不太方便操作字符串,建议加
split
以转换成列表然后循环
sqlList = sql.split(';')
data = []
for sql in sqlList:
cs.execute(sql)
data.append(cs.fetchall())
以上是关于Python pymysql是否能执行在一个字符串里面的多句SQL的主要内容,如果未能解决你的问题,请参考以下文章