Is there a way to execute more than one query per string in MySQL-Python?

后端 未结 2 1222
梦谈多话
梦谈多话 2021-01-15 21:27

I have some input which is a string containing more than one MySQL queries, such as USE some_db; SELECT * FROM some_table;. When I store this string as s<

相关标签:
2条回答
  • 2021-01-15 22:04

    Certainly, a Python script can run multiple SQL statements from a string or list, external .sql or .txt file that can be sourced to MySQL.

    However, the cur.execute command runs one SQL line one at a time. Hence, you will need to loop through each SQL line iteratively. So, consider splitting the multiple SQL commands by semicolon.

    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() + ';')
    

    But be sure to remove any semicolons found in comments.

    # PROCESSING STEP 1;
    # PROCESSING STEP 1
    
    0 讨论(0)
  • 2021-01-15 22:14

    Look at the documentation for MySQLCursor.execute().

    It claims that you can pass in a multi parameter that allows you to run multiple queries in one string.

    If multi is set to True, execute() is able to execute multiple statements specified in the operation string.

    multi is an optional second parameter to the execute() call:

    operation = 'SELECT 1; INSERT INTO t1 VALUES (); SELECT 2'
    for result in cursor.execute(operation, multi=True):
    
    0 讨论(0)
提交回复
热议问题