• 爬虫与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()
    有志者,事竟成,破釜沉舟,百二秦关终属楚; 苦心人,天不负,卧薪尝胆,三千越甲可吞吴。
  • 相关阅读:
    【Java POI】POI基于事件驱动解析大数据量2007版本Excel,空值导致列错位问题
    【Java MyBatis Generator】使用generator自动生成Dao,Mapping和实体文件
    Java连接MQ的实例, 测试类
    与MQ通讯的完整JAVA程序
    MQ中将消息发送至远程队列的配置
    IBM MQ 使用指南
    Java调用MQ队列
    IBM MQ介绍
    HttpWebRequest和HttpWebResponse
    SQL SERVER中DBLINK的实现
  • 原文地址:https://www.cnblogs.com/luyj00436/p/15434362.html
Copyright © 2020-2023  润新知