python链接postgresql数据库
2015-10-23 20:34
651 查看
python链接数据库使用了psycopg2这个模块,这个模块的安装可以到其官网上下载安装:
http://www.stickpeople.com/projects/python/win-psycopg/ 这里是windows下的下载安装链接,请选择跟你安装的python的版本一致的版本下载安装,cmd下输入:python -V,查看本地python版本号。
安装完毕以后就可以写代码测试了,我的测试环境是windows下安装了postgresql数据库,执行的python代码在虚拟机的Ubuntu下,其实拿到windows执行也是没问题的,
代码如下:
以上就是链接和一些操作的函数代码,可以看到,非常的简单的。
因为默认的
的结果返回的是元组,因此在代码中使用下面的方式
self.cursor = self.conn.cursor(
cursor_factory = psycopg2.extras.DictCursor)
这使得返回结果是字典
下面就说一下链接是会遇到的一些问题:
如果链接不上服务器的数据库,
首先检查C:\Program Files (x86)\PostgreSQL\9.0\data\pg_hba.conf这个文件的配置是否正确,
比如,我windows的IP地址是192.168.8.66,虚拟机的Ubuntu系统的IP是192.168.8.22
这样的话只需在# IPv4 local connections:下面添加如下一行即可。
host all all 192.168.8.0/24 md5
上面那一行的意思是允许IP地址在192.168.8.0--192.168.8.255之间的机器连接到这个服务器,
这个文件一开始默认的应该是
host all all 127.0.0.1/32 md5
意思是只允许本地机器连接该数据库,/24和/32的区别是,24表示地址不固定,32表示地址固定的
检查完上述文件以后再检查C:\Program Files (x86)\PostgreSQL\9.0\data\stgresql.conf的配置,在这个文件中找到listen_addresses = 'localhost',将这一句改为listen_addresses = '*'即可。
最后的最好,如果还是连不上,那就只能放大招了,检查Windows防火墙是否打开,如果打开,请关闭
http://www.stickpeople.com/projects/python/win-psycopg/ 这里是windows下的下载安装链接,请选择跟你安装的python的版本一致的版本下载安装,cmd下输入:python -V,查看本地python版本号。
安装完毕以后就可以写代码测试了,我的测试环境是windows下安装了postgresql数据库,执行的python代码在虚拟机的Ubuntu下,其实拿到windows执行也是没问题的,
代码如下:
import psycopg2 import psycopg2.extras DATABASE_HOST = "192.168.8.66" #要链接的服务器的IP地址,我本地windows系统的IP为192.168.8.66 DATABASE_PORT = 5432 #postgresql端口号,安装postgresql时设置的,一般默认是5432 DATABASE_NAME = "testdb" #数据库名称 DATABASE_USERNAME = "postgres" #用户名,这里的用户名也是在安装postgresql时设置的,一般默认postgres DATABASE_PASSWORD = "123456" #链接数据库服务器的密码,安装时设置,安装完毕后可以修改的 class Mydb(): def __init__( self, host=DATABASE_HOST, port=DATABASE_PORT, user=DATABASE_USERNAME, password=DATABASE_PASSWORD, database=DATABASE_NAME): print host,port,user,password,database self.conn = psycopg2.connect( host = host, port = port, user = user, password = password, database = database) self.cursor = self.conn.cursor( cursor_factory = psycopg2.extras.DictCursor) self.result = None def getNextOne(self,): self.result = self.cursor.fetchone() return self.result def getAll(self,): self.result = self.cursor.fetchall() return self.result def getCurrentOne(self,): return self.result def runsql(self,sql): return self.cursor.execute(sql) def close(self,): self.cursor.close() self.conn.close() def rowcount(self,): return self.cursor.rowcount def commit(self,): return self.conn.commit() if __name__ == "__main__": print "begin" db = Mydb()
db.runsql('select * from config_road')
rows = db.cursor.fetchall()
for i in rows:
print i
print db.cursor.rowcount
以上就是链接和一些操作的函数代码,可以看到,非常的简单的。
因为默认的
self.cursor = self.conn.cursor()
的结果返回的是元组,因此在代码中使用下面的方式
self.cursor = self.conn.cursor(
cursor_factory = psycopg2.extras.DictCursor)
这使得返回结果是字典
下面就说一下链接是会遇到的一些问题:
如果链接不上服务器的数据库,
首先检查C:\Program Files (x86)\PostgreSQL\9.0\data\pg_hba.conf这个文件的配置是否正确,
比如,我windows的IP地址是192.168.8.66,虚拟机的Ubuntu系统的IP是192.168.8.22
这样的话只需在# IPv4 local connections:下面添加如下一行即可。
host all all 192.168.8.0/24 md5
上面那一行的意思是允许IP地址在192.168.8.0--192.168.8.255之间的机器连接到这个服务器,
这个文件一开始默认的应该是
host all all 127.0.0.1/32 md5
意思是只允许本地机器连接该数据库,/24和/32的区别是,24表示地址不固定,32表示地址固定的
检查完上述文件以后再检查C:\Program Files (x86)\PostgreSQL\9.0\data\stgresql.conf的配置,在这个文件中找到listen_addresses = 'localhost',将这一句改为listen_addresses = '*'即可。
最后的最好,如果还是连不上,那就只能放大招了,检查Windows防火墙是否打开,如果打开,请关闭
相关文章推荐
- python中的else子句
- windows下面安装Python和pip
- python爬取网易评论
- Python lambda 匿名函数 (二十二)
- 人们为什么不使用Python3?
- Python -- 文档测试
- python copy 深拷贝与浅拷贝
- 通过编写聊天程序来熟悉python中多线程及socket的用法
- Python 正则表达式
- Python 正则表达式
- python 连接 db2
- Notes on Generator 1
- 【Python之旅】第八篇:开发监控软件的思想与流程
- 【Python之旅】第八篇:开发监控软件的思想与流程
- 安装pip ipython
- PHP、C#、JAVA、Python...学哪一种可以赚钱多和找到工作
- 如何用Python实现八大排序算法
- Python生成器
- 在 android 上运行 python 的方法
- sublime2配置python环境