更新时间:2026-07-28 GMT+08:00
分享

执行SQL语句

在Psycopg2中,当数据库创建游标对象时默认开启事务,该游标下执行的SQL命令都在该事务中。该事务提交和回滚由connection对象处理。

应用程序通过执行SQL语句来操作数据库,可以执行各种类型的SQL语句,例如创建表、插入数据、更新数据、删除数据、查询等。execute()方法用于执行单行SQL语句,executemany()方法用于执行多行SQL语句。

以下给出execute()和executemany()方法使用的一个示例(完整示例请参考数据库建连、执行SQL并返回结果)。前置条件是已经连接数据库,连接对象为conn。

  1. 调用cursor()方法创建游标对象。

    cur=conn.cursor()

  2. 调用execute()方法创建student表。

    cur.execute("CREATE TABLE student(id integer,name varchar,gender varchar)")

  3. 调用execute()方法逐个插入数据。

    cur.execute("INSERT INTO student(id,name,gender) VALUES(%s,%s,%s)",(1,'Aspirin','M'))   # 使用%s作为占位符,执行时参数值会自动替换%s占位符。
    cur.execute("INSERT INTO student(id,name,gender) VALUES(%s,%s,%s)",(2,'Taxol','F'))
    cur.execute("INSERT INTO student(id,name,gender) VALUES(%s,%s,%s)",(3,'Dixheral','M'))

  4. 调用executemany()方法批量插入数据。

    stus = ((4,'John','M'),(5,'Alice','F'),(6,'Peter','M'))
    cur.executemany("INSERT INTO student(id,name,gender) VALUES(%s,%s,%s)",stus)

  5. 调用execute()方法将id为1的学生姓名更新为'Aspirin Updated'。

    cur.execute("UPDATE student SET name=%s WHERE id=%s", ('Aspirin Updated', 1))

  6. 调用execute()方法删除id为2的学生记录。

    cur.execute("DELETE FROM student WHERE id=%s", (2,))

  7. 调用execute()方法查询结果集。

    cur.execute("SELECT * FROM student")

相关文档