Python連接到PostgreSQL並查詢數據的方法


Python環境

本文中使用的環境是Python 3.6.4。還需要提前安裝psycopg2模塊,此模塊用於連接PostgreSQL數據庫。

 

 

 

pip install psycopg2

 

連接到PostgreSQL數據庫並查詢數據

首先引用psycopg2模塊:

import psycopg2

 

然后就可以通過如下方式連接到PostgreSQL數據庫並執行查詢數據的SQL語句:

1 # database,user,password,host,port分別對應要連接的PostgreSQL數據庫的數據庫名、數據庫用戶名、用戶密碼、主機、端口信息,請根據具體情況自行修改
2 conn = psycopg2.connect(database="test",user="postgres",password="postgres",host="127.0.0.1",port="5432")
3 cur = conn.cursor()
4 # 執行查詢命令
5 cur.execute("SELECT name,setting FROM pg_settings")

 

獲取查詢結果

接着需要獲取查詢的結果,可以選擇直接打印出來或者存放到文件中。

1)直接打印結果集

 1 # 獲取結果集的每一行
 2 rows = cur.fetchall()
 3 # 獲取所有字段名
 4 all_fields = cur.description
 5 
 6 
 7 # 首先打印字段名
 8 field_messages = []
 9 for i in range(len(all_fields)):    
10   # 格式化輸出結果,len參數是各列的顯示寬度,可以指定常量,也可自定義函數進行獲取。    
11   field_messages.append("{str:<{len}}".format(str=str(all_fields[i][0]), len=50))
12 
13 
14 field_message = "".join(field_messages)
15 print(field_message)
16 
17 
18 # 然后逐行打印結果集
19 for row in rows:    
20   row_messages = []    
21   for j in range(len(row)):        
22     # 格式化結果集        
23     row_messages.append("{str:<{len}}".format(str=str(row[j]), len=50))    
24   row_message = "".join(row_messages)    
25   print(row_message)

 

 

2)將結果集存放到文件中(以txt文件為例)

 1 # 獲取結果集的每一行
 2 rows = cur.fetchall()
 3 # 獲取所有字段名
 4 all_fields = cur.description
 5 # 寫入文件results.txt中,此處需要填寫實際路徑名
 6 with open("results.txt", "w", encoding="utf-8") as f:    
 7   # 首先寫入字段名    
 8   field_messages = []    
 9   for i in range(len(all_fields)):        
10     # 格式化輸出結果,len參數是各列的顯示寬度,可以指定常量,也可自定義函數進行獲取。        
11     field_messages.append("{str:<{len}}".format(str=str(all_fields[i][0]), len=50))    
12   field_message = "".join(field_messages)    
13   f.write(field_message + "\n")
14 
15   # 然后寫入結果集    
16   for row in rows:        
17     row_messages = []        
18     for j in range(len(row)):            
19       # 格式化結果集            
20       row_messages.append("{str:<{len}}".format(str=str(row[j]), len=50))        
21     row_message = "".join(row_messages)        
22     f.write(row_message + "\n")

 

關閉數據庫連接

所有操作完成之后需要關閉對PostgreSQL數據庫的連接。

1 # 關閉連接
2 conn.close()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM