相关文章推荐
眼睛小的木耳  ·  C++ Windows.h ...·  2 年前    · 
小胡子的羽毛球  ·  Hackthebox - ...·  2 年前    · 
风流倜傥的单杠  ·  .net mvc 列名 ...·  2 年前    · 

本文假设已经安装和配置好了PostgreSQL,如果还没有安装和配置PostgreSQL,请移步至我的另一篇博文: Debian8下安装配置PostgreSQL

本例中用的操作系统为:

Debian GNU/Linux 8.2 (jessie)

Python版本为:

Python 2.7.9

psycopg2的安装

Debian下执行以下命令安装 psycopg2:

apt-get install python-psycopg2

安装好后,就可以写Python脚本来访问PostgreSQL了。

导入psycopg2

想要使用psycopg2,必须用import语句导入该包:

import psycopg2

connection类

connection类表示数据库连接对象。由psycopg2.connect()方法创建。

创建connection对象

psycopg2.connect()函数创建一个新的数据库会话(Session)并且返回一个连接对象。该函数的参数为:

  • dbname – 数据库名字
  • user – 数据库角色名称
  • password – 数据库角色密码
  • host – 数据库地址
  • port – 端口

connection的主要方法

connection提供了常用的数据库操作:

  • commit():提交任何未提交的事务(transaction)到数据库。
  • rollback():回滚。
  • close():关闭数据库。如果关闭数据库时仍有未提交的事务,则执行回滚操作。

cursor类

创建cursor对象

psycopg2提供了一个cursor类,用来在数据库Session里执行PostgreSQL命令。cursor对象由connection.cursor()方法创建:

cur = conn.cursor()

cursor的主要方法

  • execute(query, vars=None):执行SQL语句。
  • fetchall():获取所有查询结果,返回值为tuple列表。

有了cursor对象,就可以操作数据库了。

建立数据库连接

conn = psycopg2.connect(dbname="mydb", user="postgres",
        password="1234", host="127.0.0.1", port="5432")
cur.execute(
        'CREATE TABLE Employee ('
        'name    varchar(80),'
        'address varchar(80),'
        'age     int,'
        'date    date'
cur.execute("INSERT INTO Employee "
        "VALUES('Gopher', 'China Beijing', 100, '2017-05-27')")
cur.execute("SELECT * FROM Employee")
rows = cur.fetchall()
for row in rows:
    print('name=' + str(row[0]) + ' address=' + str(row[1]) + 
        ' age=' + str(row[2]) + ' date=' + str(row[3]))
cur.execute("UPDATE Employee SET age=12 WHERE name='Gopher'")
cur.execute("DELETE FROM Employee WHERE name='Gopher'")
#coding=utf-8
import psycopg2
# 连接数据库
conn = psycopg2.connect(dbname="mydb", user="postgres",
        password="1234", host="127.0.0.1", port="5432")
# 创建cursor以访问数据库
cur = conn.cursor()
# 创建表
cur.execute(
        'CREATE TABLE Employee ('
        'name    varchar(80),'
        'address varchar(80),'
        'age     int,'
        'date    date'
# 插入数据
cur.execute("INSERT INTO Employee "
        "VALUES('Gopher', 'China Beijing', 100, '2017-05-27')")
# 查询数据
cur.execute("SELECT * FROM Employee")
rows = cur.fetchall()
for row in rows:
    print('name=' + str(row[0]) + ' address=' + str(row[1]) + 
        ' age=' + str(row[2]) + ' date=' + str(row[3]))
# 更新数据
cur.execute("UPDATE Employee SET age=12 WHERE name='Gopher'")
# 删除数据
cur.execute("DELETE FROM Employee WHERE name='Gopher'")
# 提交事务
conn.commit()
# 关闭连接
conn.close()
Python psycopg2是在Python中连接PostgreSQL数据库的一种简单和高效的方法,它提供了一些重要的概念,例如连接数据库、使用光标和事务、执行SQL语句、数据类型映射等内容。在学习Python psycopg2之前需要一定的前置知识和理解,如Python编程语言和关系型数据库基本知识等,通过学习Python psycopg2可以进一步提高Python 应用程序的功能。Python psycopg2是一个Python库,在Python中提供了一个连接PostgreSQL数据库的接口。 psycopg2,是Python语言的PostgreSQL数据库接口,它的主要优势在于完全支持Python DB API 2.0,以及安全的多线程支持。它适用于随时创建、销毁大量游标的、和产生大量并发INSERT、UPDATE操作的多线程数据库应用。本文简单介绍了使用psycopg2PostgreSQL增删改查的基本操作,供参考。首先,要安装python,pip以及psycopg2。可以使用pip list查看是否安装该类库。 之前写过python连接postgresql的方法,今天在网上详细总结了一下psycopg2的使用方法 使用*.ini文件(python的configparser包可以解析这种类型的配置文件)保存数据库连接的配置信息。 使用psycopg2.connect函数获得connection对象。 使用connection对象创建cursor对象。 使用cursor对象执行sql语句提交或者回滚transaction。 使用cursor对象fetchone获得查询结果。 关闭cursor对象和connec 目录前言一、使用pycharm连接postgresSQL1-1、连接数据库1-2、关闭数据库1-3、cursor类1-4、使用python的configparser包来解析配置文件 psycopg2库是python用来操作postgreSQL 数据库的第三方库。 一、使用pycharm连接postgresSQL 1-1、连接数据库 try : conn = psycopg2.connect(database='postgres', user='postgres', password='xuha 前面学习了MySQL的基础语句,就有人会问,那怎么去通过编程语言来操作mysql数据库呢,这总不能只能用sql指令来去操作吧?答案是肯定可以通过编程语言去操作的,只是sql指令是操作数据库的基础指令,编程语言只是其辅助作用的,把数据库与其他程序进行结合。那这一期我就来讲解怎么去通过Python去连接MySQL数据库,同时实现数据库等相关操作。 昨天使用python写了操作嵌入式数据库SQLite的方法,今天用python写了针对个人比较熟悉的开源数据库PostgreSQL的常用操作,开发过程简介如下: 一、环境信息: 1、操作系统: RedHat Enterprise Linux 4 Windows XP SP2 2、数据库: PostgreSQL8.3 3、 开发工具: Ecli... 在使用ORM之前,一直在用psycopg2操作数据库。原因在于比较喜欢写原生的sql语句,虽然开发速度比使用ORM慢,但是自我感觉可靠,而且在一些复杂sql时候更方便(不用处理里面的关系映射,这非常不好理解, 也可能是自己太笨了-_-)。然而也遇到一些问题,使用fetchall()方法或者fetchone()方法获取的数据的到的结果往往是一个元组。只能通过索引获取相应的数据,相比字典可操作行相对...