python连接postgresql数据库

python连接postgresql数据库

postgresql是常用的关系型数据库,并且postgresql目前还保持着全部开源的状态,所以我们今天就一起来学习一下,如何用python连接postgresql。

安装psycopg

pip install psycopg2

官方文档地址:

https://www.psycopg.org/docs/cursor.html

连接数据库操作流程

若是增、删、更等操作,则操作流程为:

  • connect连接
  • 获取游标对象cursor
  • 执行sql得到结果execute
  • 操作成功执行提交commit
  • 关闭连接释放资源
  • 若是查询,则操作流程为:

  • connect连接
  • 获取游标对象cursor
  • 执行sql得到结果 execute
  • 获取数据
  • 关闭连接释放资源
  • 查询结果和增删改其他操作步骤都一样,只有第四步的时候,有些许差别。

    1.connect连接

    psycopg2.connect(dsn=None , connection_factory=None , cursor_factory=None , async=False , \*\*kwargs)
    

    创建得到一个新的数据库会话并返回一个新的connection对象。
    可以使用dsn参数将连接参数指定为libpq连接字符串:

    conn = psycopg2.connect("dbname=test user=postgres password=secret")
    

    或者用一组关键字参数:

    conn = psycopg2.connect(dbname="test", user="postgres", password="secret")
    

    或者两者混用,如果在两个源中指定了相同的参数名称,则关键字参数值将优先于dsn参数。
    注意,需要dsn或至少一个与连接相关的关键字参数。
    基本的连接参数:

  • dbname – 数据库名称
  • user – 用于验证的用户名
  • password – 用于验证的密码
  • host – 数据库主机地址
  • port – 连接的端口号(默认5432)
  • 示例:

    conn = psycopg2.connect(database='test',user='postgres',password='123456',host='localhost',port='5432')
    

    2.cursor

    cursor ( name = None , cursor_factory = None , scrollable = None , withhold = False ) 
    

    使用连接返回一个新cursor对象。

    示例:

    cursor = conn.cursor()
    

    3.excute执行sql语句

    从上面cursor()后得到一个游标对象,该游标对象使用execute方法或者executemany方法执行sql语句。

  • execute(query, vars=None)
  • cursor.execute(sql)
    
  • executemany(query, vars_list)
  • cursor.executemany(sql)
    

    4.提交结果

    若是增加,删除,更改表中的数据,修改后必须提交才能生效。

    conn.commit()
    

    4.获取数据

    若是查询数据的时候,我们需要检索函数获取数据,常用的函数有fetchone(),fetchmany(),fetchall()

  • fetchone()
    返回一个元组,元组中是结果集的下一行。当没有数据可用时,则返回None。
  • fetchmany([size=cursor.arraysize])
    返回一个元组,元组中是下一组结果的结果集。当没有更多行可用时,返回一个空列表。
    每次调用要获取的行数由参数指定。如果未给出,则游标arraysize确定要获取的行数。
    在不传参数的情况下,默认只返回第一条数据,若是在括号里传入数字,表示获取几条数据,则最后的结果就会返回几条。
  • fetchall()
    获取查询结果的所有(剩余)行,将它们作为元组列表返回。如果没有更多记录可获取,则返回一个空列表。
  • 5.关闭连接

    conn.close()
    

    示例

    import psycopg2
    ## 建立connect 连接
    conn = psycopg2.connect(database='test',user='postgres',password='xxxxxx',host='localhost',port='5432')
    
    # 游标
    cur = conn.cursor()
    
    # 执行sql
    # 建表
    cur.execute('create table tname(id int,name varchar);')
    # 插入数据
    cur.execute('insert into tname values (1,\'张三\');');
    t_table=((2,'李四'),(3,'王五'))
    cur.executemany('insert into tname values (%s,%s)',t_table)
    
    # 提交数据
    conn.commit()
    
    # 关闭连接
    conn.close()
    

    得到结果如下图:

    import psycopg2
    ## 建立connect 连接
    conn = psycopg2.connect(database='test',user='postgres',password='xxxxxx',host='localhost',port='5432')
    
    # 游标
    cur = conn.cursor()
    
    # 执行sql
    cur.execute('select * from tname;')
    
    # 获取数据
    rows = cur.fetchall()
    for row in rows:
        print(row)
    
    
    # 关闭连接
    conn.close()
    

    得到结果如下图:

    好啦,本文到这里就结束啦。
    感谢您的阅读~

    物联沃分享整理
    物联沃-IOTWORD物联网 » python连接postgresql数据库

    发表评论