【转】 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 Psycopg2的更多相关文章

  1. Python使用psycopg2模块操作PostgreSQL

    https://blog.csdn.net/pcent/article/details/78643611

  2. ubuntu 14.04 安装python包psycopg2

    http://stackoverflow.com/questions/28253681/you-need-to-install-postgresql-server-dev-x-y-for-buildi ...

  3. Class to connect postgres with python in psycopg2

    For we need to connect the postgres db in project very frequently, so write the follows class: impor ...

  4. python安装psycopg2

    vim ~/.bash_profile export PATH=/Applications/Postgres.app/Contents/Versions/9.4/bin/:$PATH pip inst ...

  5. PostgreSQL连接python,postgresql在python 连接,创建表,创建表内容,插入操作,选择操作,更新操作,删除操作。

    安装 PostgreSQL可以用Python psycopg2模块集成. sycopg2是Python编程语言的PostgreSQL数据库的适配器. 其程序代码少,速度快,稳定.不需要单独安装这个模块 ...

  6. PostgreSQL连接Python

    安装 PostgreSQL可以用Python psycopg2模块集成. sycopg2是Python编程语言的PostgreSQL数据库的适配器. 其程序代码少,速度快,稳定.不需要单独安装这个模块 ...

  7. python 操作PostgreSQL

    pip install psycopg Python psycopg2 模块APIs 以下是psycopg2的重要的的模块例程可以满足Python程序与PostgreSQL数据库的工作. S.N. A ...

  8. python连接mysql、sqlserver、oracle、postgresql数据库的一些封装

    包括python连接数据库,以及django下配置连接数据库 # -*- coding:utf-8 -*- import psycopg2 import pymysql import pymssql ...

  9. Python 操作 PostgreSQL 数据库

    我使用的是 Python 3.7.0 PostgreSQL可以使用psycopg2模块与Python集成. sycopg2是用于Python编程语言的PostgreSQL数据库适配器. psycopg ...

随机推荐

  1. kohana学习经验

    1.sql查询文件缓存使用 $tokens = DB::select('id', 'token') ->from('member') ->where('id', 'in', $users) ...

  2. h5离线缓存

    离线缓存:application cache 什么是离线缓存: 离线缓存可以将站点的一些文件缓存到本地,它是浏览器自己的一种机制,将需要的文件缓存下来,以便后期即使没链接网络,被缓存的页面也可以展示 ...

  3. jobs的后台进程程序如何终止?

    好像没有专门的jobs相关的命令来终止后台进程, 只有通过 jobs -l看 后台进程的pid, 然后用kill来终止. 摘录: (( 进程的终止 后台进程的终止: 方法一: 通过jobs命令查看jo ...

  4. AtomicIntegerFieldUpdater 源码分析

    AtomicIntegerFieldUpdater AtomicIntegerFieldUpdater 能解决什么问题?什么时候使用 AtomicIntegerFieldUpdater? 1)字段必须 ...

  5. java操作JSON字符串转换成对象的时候如何可以不建立实体类也能获取数据

    引入依赖 <dependency>    <groupId>com.alibaba</groupId>    <artifactId>fastjson& ...

  6. BeautifulSoup模块学习文档

    一.BeautifulSoup简介 1.BeautifulSoup模块 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档 ...

  7. VUE(vue对象的简单属性)

    一:全局过滤器和局部过滤器 ps:不管是局部过滤器还是全局过滤器,一定都要有renturn 返回 <!DOCTYPE html> <html lang="en"& ...

  8. 使用spring提供的@Scheduled注解创建定时任务

    使用方法 操作非常简单,只要按如下几个步骤配置即可 1. 导入jar包或添加依赖,其实定时任务只需要spring-context即可,当然起服务还需要spring-web: 2. 编写定时任务类和方法 ...

  9. java.lang.NoClassDefFoundError: com/opensymphony/xwork2/util/finder/DefaultClassFinder$InfoBuildingV 解决方法

    问题:严重: Unable to read class [com.spml.action.AddUserAction]java.lang.NoClassDefFoundError: com/opens ...

  10. 接口自动化之get/post请求

    本篇旨在对get和post请求做一个总结 目录 1.get请求 2.post请求 1.get请求 get请求一般形式相同,仅带url即可发送请求 对于https协议的请求,加一个特殊处理即可(veri ...