Python PostgreSQL Psycopg2
2016-03-06 12:42
501 查看
【转】 http://daigong.iteye.com/blog/901160
Python如果要操作Postgresql,需要一个API,这就需要Psycopg2
1. 链接PostgreSQL并设定Cursor
import psycopg2
import psycopg2.extras
conn = psycopg2.connect(host=’localhost’, port=5432, user=’postgres’, password=’postgres’, database=’test’) # connect()也可以使用一个大的字符串参数, 比如”host=localhost port=5432 user=postgres password=postgres dbname=test”
cursor = conn.cursor(cursor_factory=psycopg2.extras.DictCursor) #这里创建的是一个字典Cursor, 这样返回的数据, 都是字典的形式, 方便使用
2. 执行SQL脚本
cursor.execute(‘SELECT * FROM test WHERE id > %s;’, (5,))
这里的使用有一些奇怪, 有几个地方需要说明. 首先, sql脚本必须以;结尾, 不可以省略. 其次, 不管sql中有几个参数, 都需要用%s代替, 只有%s, 不管值是字符还是数字, 一律%s. 最后, 第二个参数中, 一定要传如元祖, 哪怕只有一个元素, 像我刚才的例子一样, (5)这样是不行的.
3. 得到查询结果
psycopg2提供了3种得到结果的方式, fetchone(), fetchall()和fetchmany(). fetchone()返回一条结果, 如果找不到, 返回None. fetchall()返回所有结果, 如果找不到, 返回空list. fetchmany接收1个参数, 即返回的结果数, 每次调用, 游标向后移, 找不到了, 就返回空list.
4. 查看生成的sql脚本
cursor.mogrify(‘SELECT * FROM test WHERE a = %s AND b = %s;’, (‘a’, ‘b’))
mogrify()函数会返回生成的sql脚本, 用以查看生成的sql是否正确.
5. 查看上一条执行的脚本
cursor.query
这是一个只读的属性, 用以查看上次执行的sql脚本.
6. 插入数据
执行完INSERT, UPDATE, DELETE这样的sql脚本后, 需要conn.commit()提交一下, 才会把数据提交到数据库当中. 切记.
这里有几个小技巧, 大家肯定会用的上的.
1. 取得最后插入的记录的ID
在INSERT的语句最后面加上RETURNING id即可, 比如:
cursor.execute(‘INSERT INTO test (a, b) VALUES (%s, %s) RETURNING id;’, (‘a’, ‘b’))
item = cursor.fetchone()
print item[0] #这里就是刚才插入的记录的ID了
Python如果要操作Postgresql,需要一个API,这就需要Psycopg2
1. 链接PostgreSQL并设定Cursor
import psycopg2
import psycopg2.extras
conn = psycopg2.connect(host=’localhost’, port=5432, user=’postgres’, password=’postgres’, database=’test’) # connect()也可以使用一个大的字符串参数, 比如”host=localhost port=5432 user=postgres password=postgres dbname=test”
cursor = conn.cursor(cursor_factory=psycopg2.extras.DictCursor) #这里创建的是一个字典Cursor, 这样返回的数据, 都是字典的形式, 方便使用
2. 执行SQL脚本
cursor.execute(‘SELECT * FROM test WHERE id > %s;’, (5,))
这里的使用有一些奇怪, 有几个地方需要说明. 首先, sql脚本必须以;结尾, 不可以省略. 其次, 不管sql中有几个参数, 都需要用%s代替, 只有%s, 不管值是字符还是数字, 一律%s. 最后, 第二个参数中, 一定要传如元祖, 哪怕只有一个元素, 像我刚才的例子一样, (5)这样是不行的.
3. 得到查询结果
psycopg2提供了3种得到结果的方式, fetchone(), fetchall()和fetchmany(). fetchone()返回一条结果, 如果找不到, 返回None. fetchall()返回所有结果, 如果找不到, 返回空list. fetchmany接收1个参数, 即返回的结果数, 每次调用, 游标向后移, 找不到了, 就返回空list.
4. 查看生成的sql脚本
cursor.mogrify(‘SELECT * FROM test WHERE a = %s AND b = %s;’, (‘a’, ‘b’))
mogrify()函数会返回生成的sql脚本, 用以查看生成的sql是否正确.
5. 查看上一条执行的脚本
cursor.query
这是一个只读的属性, 用以查看上次执行的sql脚本.
6. 插入数据
执行完INSERT, UPDATE, DELETE这样的sql脚本后, 需要conn.commit()提交一下, 才会把数据提交到数据库当中. 切记.
这里有几个小技巧, 大家肯定会用的上的.
1. 取得最后插入的记录的ID
在INSERT的语句最后面加上RETURNING id即可, 比如:
cursor.execute(‘INSERT INTO test (a, b) VALUES (%s, %s) RETURNING id;’, (‘a’, ‘b’))
item = cursor.fetchone()
print item[0] #这里就是刚才插入的记录的ID了
相关文章推荐
- Python---装饰器
- python测试微信中谁把你删除了
- vim+python+OpenCV学习七 : Sobel算子、Laplacian算子和Canny边缘检测
- python的简单介绍
- 用python爬虫来爬华科宿舍查电费
- python _列表
- python之禅
- Python class and function json
- python基础02
- sublime 常见错误 UnicodeDecodeError: 'gbk' codec can't decode bytes
- python -抽象那些事
- Python脚本的基本格式和文档字符串
- python函数式编程
- PythonChallenge之level-6解题报告
- Python切片知识解析
- python实现二叉树和它的七种遍历
- python 数字
- 基于python3的机器学习库
- python实现PMI(求词语关联性)
- windows下安装numpy,scipy和matplotlib