python链接postgresql数据库

    python链接数据库使用了psycopg2这个模块,这个模块的安装可以到其官网上下载安装:


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防火墙是否打开,如果打开,请关闭


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值