一、概述
在Python中,为了操作数据库,我们需要先连接数据库。连接成功后可以利用execute()方法执行SQL语句。conn.execute()是一个用于执行对数据库的增、删、改、查等操作的方法。
二、执行SQL语句
conn.execute()方法用于执行SQL语句。我们可以使用该方法执行增、删、改、查表数据等操作。例如,如果我们需要查询一个表中的所有数据,并打印出每一行的所有字段,则可以使用如下代码:
import sqlite3 conn = sqlite3.connect('example.db') cursor = conn.execute("SELECT * from COMPANY") for row in cursor: print(row) conn.close()
上述代码中,我们连接了一个SQLite数据库,并执行了一个SELECT语句查询了一个名为COMPANY的表中的所有数据。并通过cursor变量迭代每一行数据进行输出。
三、插入数据
使用Python编程语言,我们可以在数据库中执行插入语句。例如,如果我们需要将一些数据插入到一个名为COMPANY的表中,则可以使用如下代码:
import sqlite3 conn = sqlite3.connect('example.db') conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (1, 'Paul', 32, 'California', 20000.00 )") conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (2, 'Allen', 25, 'Texas', 15000.00 )") conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )") conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (4, 'Mark', 25, 'Rich-Mond', 65000.00 )") conn.commit() print("Records created successfully") conn.close()
上述代码中,我们定义了4个要插入的数据行,然后通过conn.execute()方法使用INSERT INTO语句进行插入操作,最后还需要通过commit()方法进行提交操作,才能真正将数据插入到表中。
四、更新数据
我们可以使用Python的conn.execute()方法更新一条或多条数据。例如,如果需要更新名为COMPANY表中ID为1的记录的地址和薪水数据,则可以使用如下代码:
import sqlite3 conn = sqlite3.connect('example.db') conn.execute("UPDATE COMPANY set ADDRESS = 'Texas' where ID = 1") conn.execute("UPDATE COMPANY set SALARY = 25000.00 where ID = 1") conn.commit() print("Total number of rows updated :", conn.total_changes) cursor = conn.execute("SELECT id, name, address, salary from COMPANY") for row in cursor: print(row) conn.close()
上述代码中,我们使用UPDATE语句将ID为1的地址更新为Texas,将薪水更新为25000.00,并通过cursor变量迭代每一行数据进行输出。
五、删除数据
我们可以使用Python的conn.execute()方法删除一行或多行数据。例如,如果我们要删除名为COMPANY中ID为2的记录,则可以使用如下代码:
import sqlite3 conn = sqlite3.connect('example.db') conn.execute("DELETE from COMPANY where ID = 2;") conn.commit() print("Total number of rows deleted :", conn.total_changes) cursor = conn.execute("SELECT id, name, address, salary from COMPANY") for row in cursor: print(row) conn.close()
上述代码中,我们使用DELETE语句删除ID为2的记录,并通过cursor变量迭代每一行数据进行输出。
六、事务
如果有一个以上的操作需要在一个事务中完成,那么我们可以使用Python的事务支持,将多个操作组合在一起。例如,如果我们需要同时更新一个名为COMPANY的表和一个名为DEPARTMENT的表,则可以使用如下代码:
import sqlite3 conn = sqlite3.connect('example.db') print("Opened database successfully") conn.execute("UPDATE COMPANY set SALARY = 25000.00 where ID = 1") conn.execute("DELETE from COMPANY where ID = 2;") cursor = conn.execute("SELECT id, name, address, salary from COMPANY") for row in cursor: print(row) conn.execute("INSERT INTO DEPARTMENT (ID,DEPT,EMP_ID) \ VALUES (1, 'IT', 1 )") conn.execute("INSERT INTO DEPARTMENT (ID,DEPT,EMP_ID) \ VALUES (2, 'HR', 2 )") cursor = conn.execute("SELECT id, dept, emp_id from DEPARTMENT") for row in cursor: print(row) conn.commit() print("Transaction completed successfully") conn.close()
上述代码中,我们在一个事务中进行了多个操作,即通过UPDATE、DELETE语句更新和删除COMPANY表的数据,再通过INSERT INTO语句向DEPARTMENT表中插入数据和查询DEPARTMENT表中的数据。
七、错误处理
在编写代码的过程中,我们需要注意异常处理,以确保代码在运行时不会出现不必要的错误。如果接收到问题,Python将引发异常,我们可以使用try … except语句处理它。
import sqlite3 try: conn = sqlite3.connect('example.db') conn.execute("UPDATE COMPANY set SALARY = 35000.00 where ID = 1") conn.execute("DELETE from COMPANY where ID = 2;") cursor = conn.execute("SELECT id, name, address, salary from COMPANY") for row in cursor: print(row) conn.execute("INSERT INTO DEPARTMENT (ID,DEPT,EMP_ID) \ VALUES (1, 'IT', 1 )") conn.execute("INSERT INTO DEPARTMENT (ID,DEPT,EMP_ID) \ VALUES (2, 'HR', 2 )") conn.commit() print("Transaction completed successfully") except Exception as e: print("Transaction failed", e) finally: conn.close()
在上述代码中,我们在try块中执行多个操作,如果其中任何一个操作出现问题,整个事务都会下跌到except块中,最后使用finally块关闭连接。
八、总结
conn.execute()方法是一个用于执行对数据库的增、删、改、查等操作的SQL语句的方法。我们可以通过该方法执行各种SQL语句,如SELECT、INSERT、UPDATE、DELETE等操作,也可以利用Python的事务支持将多个操作组合在一起。在编写代码时,我们需要注意异常处理,以确保代码在运行时不会出现不必要的错误。