1 安装PostgreSQL
从官网下载windows install,直接安装,默认用户为postgres,密码一定需要设置。
在pgAdmin中新建数据库StudiousPrime
2 安装Python驱动
从Unofficial Windows Binaries for Python Extension Packages
下载预编译好的psycopg2-2.6.2-cp27-cp27m-win32.whl
包,通过pip
安装。
正常情况下安装成功(windows server 2008 64bit、Python 2.7.10 32bi、非virtualenv、已预装PostgreSQL)1
2
3Processing d:\tools\python\psycopg2-2.6.2-cp27-cp27m-win32.whl
Installing collected packages: psycopg2
Successfully installed psycopg2-2.6.2
但是在开发笔记本(windows 7 32bit、Python 2.7.9 32bit、virtualenv环境)上安装出现如下错误:UnsupportedWheel: psycopg2-2.6.2-cp27-cp27m-win32.whl is not a supported wheel on this platform.
开始怀疑是没有安装PostgreSQL,但是安装完后依然出现上述错误。
通过搜索后,从http://www.stickpeople.com/projects/python/win-psycopg/下载psycopg2-2.6.2.win32-py2.7-pg9.5.3-release.exe
,然后使用easy_install安装成功。也可以使用https://github.com/nwcell/psycopg2-windows介绍的方式使用pip在virtualenv下安装。
3 配置Flask
在config.py
中,将SQLALCHEMY_DATABASE_URI
修改为PostgreSQL的地址,替换其中的username
(默认为postgres)和password
,host
为数据库IP或域名。:1
postgresql://username:password@host/StudiousPrime
Flask重启后,连接数据库出现如下错误:1
org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host
搜索问题后发现是因为PostgreSQL数据库为了安全,默认只会监听本地的连接请求,而我是访问服务器上的数据库。要解决这个问题,需要在服务器端PostgreSQL安装目录下找到\data\pg_hba.conf
文件,打开找到其中# IPv4 local connections:
段,添加请求连接机器的IP。1
2
3# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 请求连接机器的IP/32 md5
在pgAdmin中Reload Configuration
后,客户端就能顺利连接服务器上数据库了,剩下的工作就和SQLite一样交给SQLAlchemy就好。