📜  如何在Python执行多个 SQLite 语句?

📅  最后修改于: 2022-05-13 01:55:27.860000             🧑  作者: Mango

如何在Python执行多个 SQLite 语句?

在 SQLite 中使用 executescript() 方法,我们可以一次执行多个 SQL 语句/查询。基本的 execute() 方法允许我们一次只接受一个查询,因此当您需要执行多个查询时,我们需要像脚本一样排列它们并将该脚本传递给 executescript() 方法。

executescript() 可以连续执行一系列 SQL/SQLite 查询。当 executescript() 操作正在运行时,其他线程/操作在 executescript() 执行完所有查询之前无法访问数据库。如果我们需要为 executescript() 中的每个查询提供一些运行时参数,我们不能在运行时添加外部参数,因为 executescript() 方法在运行时不接受查询的任何参数,因此您需要提供一组静态查询作为脚本。在executescript()方法的执行中,首先发出COMMIT语句,然后执行SQL/SQLite脚本。

句法:

cursor_obj.executescript(""" 
    SQLite Statement/Query . . . 1
    SQLite Statement/Query . . . 2
    SQLite Statement/Query . . . 3
    .
    .
    .
    SQLite Statement/Query . . . n 
""")

下面的代码显示了如何在Python执行多个 SQLite 语句/查询:

Python3
import sqlite3 
  
  
# make the database connection and cursor object
connection = sqlite3.connect("CollegeData.db")
cursor = connection.cursor()
  
# create a set of queries in executescript()
# below set of queries will create and insert
# data into table
cursor.executescript(""" 
    CREATE TABLE department( deptId INTEGER,
    deptName VARCHAR(20), deptScore INTEGER); 
  
    INSERT INTO department VALUES ( 01,'IT', 850 );
    INSERT INTO department VALUES ( 02,'COMP', 840 );
    INSERT INTO department VALUES ( 03,'CIVIL', 500 );
    INSERT INTO department VALUES ( 04,'E&TC', 650 );
""")
  
# fetch the table data
print("Table data :")
cursor.execute("SELECT * FROM department") 
print(cursor.fetchall())
  
# below set of queries will update the data
# of in the table
cursor.executescript("""
    UPDATE department set deptScore = 900 where deptId = 01;
    UPDATE department set deptScore = 890 where deptId = 02;
    UPDATE department set deptScore = 660 where deptId = 03;
    UPDATE department set deptScore = 790 where deptId = 04;
""")
  
# fetch the table data after updation
print("Table data after updation :")
cursor.execute("SELECT * FROM department") 
print(cursor.fetchall())
  
# commit the changes and close the database
# connection 
connection.commit() 
connection.close()


输出

上面的代码一次执行多个 SQLite 语句。代码中的第一个 executescript() 方法在一个实例中创建数据并将其插入到表中。然后第二个 executescript() 方法更新一个实例中的所有记录。通过这种方式,可以在 SQLite 中使用 executescript() 执行一组许多查询。