Ubuntu 安装 PostgreSQL 和 python-psycopg2基础教程(以及错误解决)

2012/06/27 by Crazyant    3条评论

Django支持以下四种数据库PostgreSQL(pgql)、SQLite 3、MySQL、Oracle。PostgreSQL 和 MySQL都是最受人关注的开源数据库,MySQL在国内又相对盛行,这和php领域大力推崇lamp不无关系; 关于Mysql和PostgreSQL的对比网上有很多版本,也没必要去比较,不过可以确定的一点是PostgreSQL对Django的 GIS支持更加强大。在Ubuntu 系统下为Python Django安装 PostgreSQL 数据库,还包括pgadmin3 和 python-psycopg2 等。

安装PostgreSQL 数据库

sudo apt-get install postgresql postgresql-client postgresql-contrib

安装过程提示:

The following NEW packages will be installed:

libossp-uuid16 libpq5 postgresql postgresql-8.4 postgresql-client

postgresql-client-8.4 postgresql-client-common postgresql-common

postgresql-contrib postgresql-contrib-8.4

……

Adding user postgres to group ssl-cert

……

Creating new cluster (configuration: /etc/postgresql/8.4/main, data: /var/lib/postgresql/8.4/main)…

Moving configuration file /var/lib/postgresql/8.4/main/postgresql.conf to /etc/postgresql/8.4/main…

Moving configuration file /var/lib/postgresql/8.4/main/pg_hba.conf to /etc/postgresql/8.4/main…

Moving configuration file /var/lib/postgresql/8.4/main/pg_ident.conf to /etc/postgresql/8.4/main…

Configuring postgresql.conf to use port 5432…

……

* Starting PostgreSQL 8.4 database server [ OK ]

Setting up postgresql (8.4.8-0ubuntu0.11.04) …

Setting up postgresql-client (8.4.8-0ubuntu0.11.04) …

Setting up postgresql-contrib-8.4 (8.4.8-0ubuntu0.11.04) …

Setting up postgresql-contrib (8.4.8-0ubuntu0.11.04) …

Processing triggers for libc-bin …

即创建了配置文件的位置为:/etc/postgresql/8.4/main/

可执行程序为:

sudo /etc/init.d/postgresql {start|stop|restart|reload|force-reload|status}

PostgreSQL 默认配置了允许本地机器访问(local access)的权限,PostgreSQL 安装完毕,使用系统账户postgres以postgres角色登录数据库设置密码,命令:

sudo -u postgres psql。

登录sql命令界面后,修改 postgres 用户的密码(psql-PostgresQL的命令行客户端):

postgres=# ALTER ROLE postgres WITH ENCRYPTED PASSWORD ‘mypassword’;

postgres=# \q

设置PostgreSQL启用远程访问

1. 这里设置允许远程连接权限:sudo vi /etc/postgresql/8.4/main/postgresql.conf

#listen_addresses = ‘localhost’ 去掉注释并修改为 listen_addresses = ‘*’

#password_encryption = on 去掉注释:password_encryption = on

2. 这里设置允许远程进行数据库操作:sudo vi /etc/postgresql/8.4/main/pg_hba.conf

最后添加一行(允许局域网ip段或其他任何ip):host all all 192.168.1.0/24 md5 其中24是CIDR地址,也可用网关代替。

——————–最后pg_hba.conf可能为这样———————-

# Database administrative login by UNIX sockets

local all postgres ident

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# “local” is for Unix domain socket connections only

local all all ident

# IPv4 local connections:

host all all 127.0.0.1/32 md5

# IPv6 local connections:

host all all ::1/128 md5

host all all 192.168.1.0/24 md5

修改linux 用户postgres的密码

sudo passwd -d postgres 删除密码

sudo su postgres -c passwd 设置密码(su 切换当前用户到postgres)

PostgreSQL创建用户和数据库

登录后使用sql语句:

create user “pytu” with password ‘mypassword’ nocreatedb;

CREATE DATABASE pytb OWNER pytu ENCODING ‘UTF-8′;

或命令行使用命令创建:

sudo -u postgres createuser -D -P dbuser 弹出设置密码

sudo -u postgres createdb -O dbuser mydb

最后经过上面的配置记得重启:sudo /etc/init.d/postgresql restart

Ubuntu 10.04: /etc/init.d/postgresql-8.4 restart

安装 PostgreSQL 数据库管理工具 pgadmin3

sudo apt-get install pgadmin3

实现和php 下的Mysql 管理工具 phpmyadmin类似的可视化数据库管理界面,终端输入pgadmin3启动时,Ubuntu 11.04下出现如下错误提示,不知是何原因:

** (pgadmin3:5579): CRITICAL **: murrine_style_draw_flat_box: assertion `width >= -1′ failed

为了启用pgAdmin 的一些功能,必须运行下面这段脚本(To enable the functions of the pgAdmin utility, run a script against the postgres database):

sudo -u postgres psql -d postgres < /usr/share/postgresql/8.4/contrib/adminpack.sql

提示CREATE FUNCTION创建函数。不同Ubuntu版本,文件路径可能不同:如Ubuntu老版本使用pgAdmin8.1的路径是:

/usr/share/postgresql/8.1/contrib/admin81.sql on current versions of Ubuntu.

安装 psycopg2

最后安装Python 的 PostgreSQL数据库驱动psycopg2:

sudo apt-get install python-psycopg2

验证psycopg2安装:

>>> python

>>> import psycopg2

>>> psycopg2.apilevel

’2.0′

Ubuntu 下,Python PostgreSQL 数据库的安装和配置基本就完成了,有点要注意的是使用django-admin新建django 项目时候,源文件最好不要放在apache 或其他web 服务器的document root下,可能会被人看到源代码。

FATAL: Ident authentication failed for user 问题

当新建一个python project 并在settings.py 中输入以下数据库信息之后:

DATABASES = {

‘default’: {

‘ENGINE’: ‘django.db.backends.postgresql_psycopg2’, # Add ‘postgresql_psycopg2’, ‘postgresql’, ‘mysql’, ‘sqlite3’ or ‘oracle’.

‘NAME’: ‘mydb’, # Or path to database file if using sqlite3.

‘USER’: ‘dbuser’, # Not used with sqlite3.

‘PASSWORD’: ‘mypassw’, # Not used with sqlite3.

‘HOST’: ”, # Set to empty string for localhost. Not used with sqlite3.

‘PORT’: ”, # Set to empty string for default. Not used with sqlite3.

}

}

测试PostgreSQL连接:

$ python manage.py shell

>>> from django.db import connection

>>> cursor = connection.cursor()

出现错误:

Traceback (most recent call last):

File “”, line 1, in

File “/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/db/backends/__init__.py”, line 250, in cursor

cursor = self.make_debug_cursor(self._cursor())

File “/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/db/backends/postgresql_psycopg2/base.py”, line 140, in _cursor

self.connection = Database.connect(**conn_params)

OperationalError: FATAL: Ident authentication failed for user “dbuser”

出现这个错误的原因还是在于上面pg_hba.conf 文件的设置,Debian系(包括ubuntu)默认的pg_hba.conf 文件对于localhost本地机器的数据库访问方式是ident,它指的是只有Linux shell用户通过同名的postgreSQL 用户才能访问,也就是pg超级用户postgres 只能由linux 用户postgres 登录后操作。要解决类似OperationalError: FATAL: Ident authentication failed for user “postgres”的问题,有两种解决方法:

1. 在执行$ python manage.py shell之前先$su postgres 切换为postgres 用户

2. 修改pg_hba.conf 的客户端访问设置,将laocal 的访问由ident 改为trust,如:

# TYPE DATABASE USER CIDR-ADDRESS METHOD

local all all trust

修改完pg_hba.conf设置记得重启pg。安装了pg_ctl 也可以用pg_ctl reload。

阅读(1684) | 评论(0) | 转发(0) |

python psycopg2_Ubuntu 安装 PostgreSQL 和 python-psycopg2基础教程(以及错误解决)相关推荐

  1. 安装postgreSQL出现configure: error: zlib library not found解决方法

    安装postgreSQL出现configure: error: zlib library not found解决方法 参考文章: (1)安装postgreSQL出现configure: error: ...

  2. 基础知识:编程语言介绍、Python介绍、Python解释器安装、运行Python解释器的两种方式、变量、数据类型基本使用

    阅读目录 今日学习内容: 1.编程语言的介绍 2.Python介绍 3.安装Python解释器(多版本共存) 4.运行Python解释器程序两种方式.(交互式与命令行式)(♥♥♥♥♥) 5.变量(♥♥ ...

  3. 自学python需要安装什么-学习python需要什么基础吗?老男孩Python

    在很多人的记忆中python是一门非常简单的编程语言,也是很多转行人员的首选,不过因为大家对python不是很了解,所以比较关心学习python需要什么基础?其实python没有基础也是可以学习的,只 ...

  4. python json安装_Python JSON - Python 基础教程 - 自强学堂

    Python JSON 本章节我们将为大家介绍如何使用 Python 语言来编码和解码 JSON 对象. Python 2.7 自带 JSON 模块[官方文档] 1. 从python原始类型向json ...

  5. 学python需要安装什么-初学 Python 需要安装哪些软件?

    自动配置.有效求助.协作编程.版本控制.一站式解决 Python 新手练习中的痛点. /> 痛点 这个学期,我在北得克萨斯大学(University of North Texas)教 INFO ...

  6. 怎么检查python是否安装成功-检查python以及django是否安装配置成功

    首先说明下,我使用pycharm作为开发的IDE,在第一次创建django项目的时候,会自动安装django包的.(网上也有很多单独安装的方法),环境变量配置成功后,就是用下面的方法检测安装成功与否. ...

  7. python怎么安装pip-安装 Python 模块

    安装 Python 模块¶ 作为一个流行的开源开发项目,Python拥有一个活跃的贡献者和用户支持社区,这些社区也可以让他们的软件可供其他Python开发人员在开源许可条款下使用. 这允许Python ...

  8. python怎么安装request_【python】如何安装requests

    在cmd窗口输入pip install requests即可,如下 C:\Users\horn1\Desktop\python\4>pip install requests Collecting ...

  9. 自学python需要安装什么-初学 Python 需要安装哪些软件?

    自动配置.有效求助.协作编程.版本控制.一站式解决 Python 新手练习中的痛点. /> 痛点 这个学期,我在北得克萨斯大学(University of North Texas)教 INFO ...

最新文章

  1. Python3之redis使用
  2. leetcode算法题--删除与获得点数★
  3. Apache Flink Meetup,1.13 新版本发布 x 互娱场景实践分享的开发者盛筵!
  4. html怎么使背景图片充屏,css如何使div背景图片填充
  5. java jar包示例_Java包getSpecificationVersion()方法和示例
  6. 数据库连接池优化配置(druid,dbcp,c3p0)
  7. python创建列表副本_Python编程15:Python列表的排序和列表的副本
  8. 扩展类载入器的载入问题
  9. free、vmstat监视内存使用情况
  10. 甲骨文超 IBM 成全球第二大软件公司
  11. 第三届蓝桥杯省赛---马虎的算式
  12. Excel 使用技巧集锦—163种技巧
  13. 简要介绍电源效率测试
  14. 短视频jiexi客户端源代码
  15. 两台计算机怎么网络连接,两台电脑怎么连接局域网,详细教您两台电脑怎么连接局域网...
  16. 蛋壳梦破:CEO被限制消费,资金链碎了一地
  17. 7-3 求最小码距 (10 分)
  18. EF提示一例对一个或多个实体的验证失败。有关详细信息,请参阅“EntityValidationErrors”属性的解决
  19. 中基鸿业什么是净值型理财产品
  20. linux与linux之间共享目录

热门文章

  1. 关于android分辨率和使用iphone版切图
  2. HTML5 视频转换软件 Freemake Video Converter
  3. 《搜索引擎-信息检索实践》7.2.1 分类应用与检索/BM25检索模型
  4. matlab实时脚本使用
  5. probit概率单位回归分析
  6. npm 安装包失败 --- 清除npm缓存
  7. 在ASP.NET MVC应用中开发插件框架(中英对照)
  8. eclipse 创建maven web 项目
  9. Ubuntu root密码设置
  10. 校园资源建设平台源代码