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