Python连接PostgreSQL数据库

PostgreSQL是一款开源、免费的数据库,其优势在于SQL标准的完备性、对于事务的支持、对于事务隔离级别的支持,以及数据类型、内置函数、索引的扩展性都很好。

下载并安装PostgreSQL

在Windows系统下,下载并安装PostgreSQL的具体流程如下。
(1)在百度中搜索PostgreSQL官网,在官网首页单击“Downloads”链接进入下载界面,如图所示。
Python连接PostgreSQL数据库

(2)单击下方的“Windows”链接弹出Windows系统的下载界面,如图所示。
Python连接PostgreSQL数据库

(3)单击“Download the installer”链接,在弹出的页面中选择安装的PostgreSQL的版本和安装的操作系统版本,单击“DOWNLOAD NOW”按钮即可下载,如图所示。
Python连接PostgreSQL数据库

(4)下载完成后得到一个“.exe”格式的运行文件,双击该文件后开始安装。注意,需要先安装微软的Visual C++,如图所示。
Python连接PostgreSQL数据库

(5)在弹出的“Setup”界面中,单击“Next”按钮。
(6)在弹出的“Installation Directory”界面中选择安装路径,单击“Next”按钮。
(7)在弹出的“Select Components”界面中选择要安装的组件,单击“Next”按钮。
(8)在弹出的“Data Directory”界面中选择数据的保存路径,单击“Next”按钮。
(9)在弹出的“Password”界面中设置数据库的密码,单击“Next”按钮。
(10)在弹出的“Port”界面中设置数据库使用的端口,单击“Next”按钮。
(11)在弹出的“Advanced Options”界面中设置本地语言为简体中文,单击“Next”按钮。
(12)连续单击“Next”按钮,一直到弹出安装成功的界面,如图所示。整个安装过程大约需要2min。
Python连接PostgreSQL数据库

使用psycopg2模块

与MySQL数据库不同,Postgres至少包含3种Python适配器驱动——psycopgPyPgSQLPyGreSQL。另外一种适配器PoPy目前已废弃,于2003年将其项目与PyGreSQL进行了合并。目前剩下的这3种适配器都有自己的特性和优缺点,建议开发者根据实际项目进行选择。

注意,PyPgSQL自2006年起就不再开发了,而PyGreSQL则是在2009年发布的最新版本(4.0)。这两种适配器不再活跃,使得psycopg成为PostgreSQL适配器的唯一引领者。

在使用psycopg2之前需要先安装,具体安装命令如下。

pip install psycopg2

如图:
Python连接PostgreSQL数据库
在Python程序中使用psycopg2的基本流程如下。
(1)导入psycopg2。要使用psycopg2,必须先用import语句导入该包。

import psycopg2

(2)使用类connection进行连接。类connection表示数据库连接对象,由psycopg2.connect()方法创建。
(3)创建connection对象。通过内置方法psycopg2.connect()创建一个新的数据库会话,并且返回一个连接对象。该方法各个参数的具体说明如下。

  • dbname:数据库名。
  • user:数据库角色名。
  • password:数据库角色的密码。
  • host:数据库地址。
  • port:端口。

(4)创建cursor对象。在psycopg2中提供了一个cursor类,用来在数据库Session中执行PostgreSQL命令。cursor对象由connection.cursor()方法创建,例如:
cur = conn.cursor()
在psycopg2模块中主要包含如下内置方法。

  • psycopg2.connect(database="testdb", user="postgres", password="cohondob", host="127.0.0.1", port="5432") 和指定的PostgreSQL数据库建立连接。如果成功建立连接,它返回一个连接对象。
  • connection.cursor() 创建一个光标,将用于整个数据库中使用Python编程。
  • cursor.execute(sql [, optional parameters]) 执行SQL语句,可使用参数化的SQL语句(即占位符,而不是SQL文字)。psycopg2的模块支持占位符(用%s标志),例如:
cursor.execute("insert into people values (%s, %s)", (who, age))
  • curosr.executemany(sql, seq_of_parameters) 对于所有参数序列或序列中的SQL映射执行SQL命令。
  • curosr.callproc(procname[, parameters]) 调用一个名为procname的存储过程。
  • cursor.rowcount 这是一个只读属性,返回数据库中行的总数。
  • connection.commit() 此方法提交当前事务。
  • connection.rollback() 此方法会回滚自上次调用commit()方法的任何更改。
  • connection.close() 此方法会关闭数据库连接。请注意,这并不自动调用commit()。如果只是关闭数据库连接而不调用commit()方法,那么所有的更改将会丢失。
  • cursor.fetchone() 用于提取查询结果集中的下一行,返回一个序列。
  • cursor.fetchmany([size=cursor.arraysize]) 取出下一组中查询结果的行数,返回一个列表。如果没有找到记录,则返回空列表。
  • cursor.fetchall() 用于获取所有查询结果(剩余)行,返回一个列表。

下面的实例文件PostgreSQL01.py演示了使用Python程序连接指定PostgreSQL数据库的过程。

import psycopg2
def connectPostgreSQL():
 conn = psycopg2.connect(database="mydb", user="postgres", password="66688888",
 host="127.0.0.1", port="5432")
 print('connect successful!')
if __name__ == '__main__':
 connectPostgreSQL()

执行后会输出:

connect successful!

下面的实例文件PostgreSQL02.py演示了使用Python程序在PostgreSQL数据库中创建指定数据表的过程。

import os
import sys
import psycopg2
def connectPostgreSQL():
 conn = psycopg2.connect(database="mydb", user="postgres", password="66688888",
 host="127.0.0.1", port="5432")
 print('connect successful!')
 cursor = conn.cursor()
 cursor.execute('''
  create table public.member(
  id integer not null primary key,
  name varchar(32) not null,
  password varchar(32) not null,
  singal varchar(128)
 )''')
  conn.commit()
  conn.close()
  print('table public.member is created!')
if __name__ == '__main__':
 connectPostgreSQL()

执行后会输出:

connect successful!
table public.member is created!

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!