Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL-Python中,有没有一种方法可以对每个字符串执行多个查询?_Python_Mysql_Mysql Python - Fatal编程技术网

在MySQL-Python中,有没有一种方法可以对每个字符串执行多个查询?

在MySQL-Python中,有没有一种方法可以对每个字符串执行多个查询?,python,mysql,mysql-python,Python,Mysql,Mysql Python,我有一些输入,它是一个包含多个MySQL查询的字符串,例如USE some_db;从一些表格中选择*。当我将此字符串存储为s和run cursor.execute时,它会打印出0L,当我执行cursor.fetchall()时,它会返回一个空元组。它不会引发任何异常,但也不起作用。当我将字符串拆分为两个查询并为每个查询打开一个游标并执行时,它可以工作,但将字符串正确拆分为查询并不容易,尤其是在有注释的情况下。有没有办法避免拆分和执行整个字符串的多个查询?或者这是一个很好的库,可以将多个查询的字符

我有一些输入,它是一个包含多个MySQL查询的字符串,例如
USE some_db;从一些表格中选择*。当我将此字符串存储为
s
run cursor.execute
时,它会打印出
0L
,当我执行
cursor.fetchall()
时,它会返回一个空元组。它不会引发任何异常,但也不起作用。当我将字符串拆分为两个查询并为每个查询打开一个游标并执行时,它可以工作,但将字符串正确拆分为查询并不容易,尤其是在有注释的情况下。有没有办法避免拆分和执行整个字符串的多个查询?或者这是一个很好的库,可以将多个查询的字符串拆分为每个查询一个字符串


谢谢

当然,Python脚本可以从一个字符串或列表、外部.SQL或.txt文件运行多个SQL语句,这些文件可以源于MySQL

但是,
cur.execute
命令一次运行一行SQL语句。因此,您将需要迭代地遍历每个SQL行。因此,考虑用分号分割多个SQL命令。
s = "USE some_db; SELECT * FROM some_table;"

# filter() removes trailing empty list item
s = filter(None, s.split(';'))

for i in s:
    # strip() removes leading and trailing white spaces  
    # semicolon is re-added per line for query run
    cur.execute(i.strip() + ';')
但一定要删除注释中的分号

# PROCESSING STEP 1;
# PROCESSING STEP 1

当然,Python脚本可以从一个字符串或列表、外部.SQL或.txt文件中运行多个SQL语句,这些文件可以源于MySQL

但是,
cur.execute
命令一次运行一行SQL语句。因此,您将需要迭代地遍历每个SQL行。因此,考虑用分号分割多个SQL命令。
s = "USE some_db; SELECT * FROM some_table;"

# filter() removes trailing empty list item
s = filter(None, s.split(';'))

for i in s:
    # strip() removes leading and trailing white spaces  
    # semicolon is re-added per line for query run
    cur.execute(i.strip() + ';')
但一定要删除注释中的分号

# PROCESSING STEP 1;
# PROCESSING STEP 1

查看MySQLCursor.execute()的文档

它声称您可以传入一个
multi
参数,该参数允许您在一个字符串中运行多个查询

如果multi设置为True,则execute()可以执行多个 在操作字符串中指定的语句

multi
是execute()调用的第二个可选参数:


查看MySQLCursor.execute()的文档

它声称您可以传入一个
multi
参数,该参数允许您在一个字符串中运行多个查询

如果multi设置为True,则execute()可以执行多个 在操作字符串中指定的语句

multi
是execute()调用的第二个可选参数:


我认为这是mysql.connector,而不是mysql-python。这会将建议更改为“切换到mysql.connector而不是mysql-python”:-)我认为这是mysql.connector,而不是mysql-python。这会将建议更改为“切换到mysql.connector而不是mysql-python”:-)该代码对于包含分号的常量字符串是危险的,对于参数化查询(应该是几乎所有的查询)效果不太好。该代码对于包含分号的常量字符串是危险的,对于参数化查询(应该是几乎所有的查询)效果不太好