爬虫与Python:(四)爬虫进阶二之数据存储(数据库存储)——8.PostgreSQL存储

安装PostgreSQL数据库方法详见:https://www.cnblogs.com/luyj00436/p/15525370.html

安装库

Psycopg是Python编程语言中最流行的PostgreSQL数据库适配器,其主要功能是完整实现Python DB API 2.0规范和线程安全(多个线程可以共享相同的链接)。它专为大量多线程应用程序而设计,可以创建和销毁大量游标,并创建大量并发“INSERT”或“UPDATE”。

Psycopg 2 主要在C语言中作为libpq包装实现,既高效又安全,它具有客户端和服务端游标,异步通信通知,“复制到/复制”支持。许多Python类型都支持开箱即用,适用匹配PostgreSQL数据类型,通过灵活的物体适应系统,可以扩展和定制适应性。Psycopg 2 兼容Unicode和Python 3。

在学习之前先安装Psycopg 2库,可以使用pip命令进行安装。

pip install psycopg2

在确保已经有一个可以连接的PostgreSQL 数据的情况下,进行接下来的学习和操作。下面是获取pg数据连接的示例。

 1 import psycopg2
 2 
 3 # 创建PostgreSQL数据库连接对象
 4 conn = psycopg2.connect(
 5     database="postgres",
 6     user="postgres",
 7     password="123456",
 8     host="localhost",
 9     port="5432"
10 )
11 
12 cur = conn.cursor() # 创建执行对象

通过cursor()方法拿到了指针对象,有了这个就可以用它执行sql语句。这与之前讲到的MySQL 操作类似。

1. 插入数据

插入数据时,只需要用户将插入的sql语句写好,然后使用cur执行操作对象execute()方法即可完成sql的执行,示例代码如下:

 1 import psycopg2
 2 
 3 # 创建PostgreSQL数据库连接对象
 4 conn = psycopg2.connect(
 5     database="postgres",
 6     user="postgres",
 7     password="123456",
 8     host="localhost",
 9     port="5432"
10 )
11 cur = conn.cursor() # 创建执行对象
12 
13 # 创建表
14 cur.execute("CREATE TABLE student(id integer,name varchar ,sex varchar);")
15 # 插入数据
16 cur.execute("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",(1,'Aspirin','M'))
17 cur.execute("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",(2,'Taxol','F'))
18 cur.execute("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",(3,'Dixheral','M'))
19 
20 # 关闭连接
21 conn.commit()
22 cur.close()
23 conn.close()

2. 查询数据

查询数据时,可以在执行完sql语句后,调用cur的fetchall()方法获取结果。示例代码如下:

cur.execute('SELECT * FROM student')
result = cur.fetchall()

3. 修改和删除数据

修改与删除数据与插入类似,唯一不同的就是sql语句,示例代码如下:

 1 import psycopg2
 2 
 3 # 创建PostgreSQL数据库连接对象
 4 conn = psycopg2.connect(
 5     database="postgres",
 6     user="postgres",
 7     password="123456",
 8     host="localhost",
 9     port="5432"
10 )
11 cur = conn.cursor() # 创建执行对象
12 
13 # 修改数据
14 cur.execute("UPDATE student set name='TiMi',sex='M' WHERE id=2")
15 # # 删除数据
16 cur.execute("DELETE from student WHERE id=3;")
17 
18 # 关闭连接
19 conn.commit()
20 print(cur.rowcount ,"条记录被修改")
21 cur.close()
22 conn.close()
上一篇:centos7安装postgresql13.4并设置开机自启


下一篇:快速掌握 PolarDB-X 拆分规则变更能力!