python鏈結postgresql資料庫

2021-07-06 03:08:21 字數 2825 閱讀 7724

安裝完畢以後就可以寫**測試了,我的測試環境是windows下安裝了postgresql資料庫,執行的python**在虛擬機器的ubuntu下,其實拿到windows執行也是沒問題的,

**如下:

import psycopg2

import psycopg2.extras

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連線postgre 資料庫

1 安裝 psycopg2 庫 pip install psycopg2 2 使用 導入庫 import psycopg2 import psycopg2.extras 需要返回結果是字典時使用此庫 建立連線 conn psycopg2.connect database basename,user ...

Linux Docker構建postgre映象

起初為什麼要構建乙個新的資料庫映象,是因為我們好多排序是漢字的問題,所以牽扯到編碼的問題 1 首先建立乙個資料夾 mkdir postgis 2 建立檔案dockerfile和build.sh 內容如下 dockerfile from mdillon postgis 11 run localedef...

Python大規模資料插入Postgresql

需要owner許可權 alter table t rs standard satellite image add constraint unique source product id unique source product id batchinsert批量插入 def batchinsert ...