执行SQL语句

查询和结果集处理

使用 cursor 函数来获取游标对象,然后调用 execute 函数来发送查询语句。 fetchall 函数可以获取全部结果集,也可以使用 fetchone 函数获取单行结果,若为空,将返回空列表。

cur = conn.cursor()
cur.execute("select id from udb_test")
rows = cur.fetchall()
for row in rows:    
    print(row)
cur.close()

执行非查询SQL语句

获取游标对象后,直接执行execute函数即可。

cur = conn.cursor()
cur.execute('create table udb_test(id integer, name TEXT)')
cur.execute("INSERT INTO TEST(id, name) VALUES(1, 'jiuyou')")
cur.close()

参数传递

curosr.execute(query, vars_list), 此方法执行被参数化的SQL语句(即占位符,而不是SQL文字)。psycopg2模块支持用%s标志的占位符。

表11.1-curosr.execute()参数:

参数名 说明
query 待执行的 sql 语句
Vars_list 变量列表,用于匹配 query
cur.execute("INSERT INTO TEST(id, name) VALUES(%s, %s)", (2, "jiuyoujishu"))

cur.execute("INSERT INTO TEST(id, name) VALUES(%(id)s, %(val)s)", {'val': 'jiuyoushujuku', 'id': 3})