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()