4. 执行SQL语句
4.1. 查询和结果集处理
使用 cursor
函数来获取游标对象,然后调用 execute
函数来发送查询语句。
fetchall
函数可以获取全部结果集,也可以使用 fetchone
函数获取单行结果,若为空,将返回空列表。
cur = conn.cursor() cur.execute("select id from test") rows = cur.fetchall() for row in rows: print(row) cur.close()
4.2. 执行非查询SQL语句
获取游标对象后,直接执行 execute
函数即可。
cur = conn.cursor() cur.execute('create table test(id integer, name TEXT)') cur.exeute("INSERT INTO TEST(id, name) VALUES(1, 'John')") cur.close()
4.3. 参数传递
ksycopg2实际上并没有prepare和bind功能,而是使用了参数传递将Python类型转换为SQL类型来防止SQL注入。
占位符使用%标记,使用%s表示按位置占位符,%(name)s表示命名占位符。
cur.exeute("INSERT INTO TEST(id, name) VALUES(%s, %s)", (2, "position placeholder")) cur.exeute("INSERT INTO TEST(id, name) VALUES(%(id)s, %(val)s)", {'val': 'name placeholder', 'id': 3})