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.
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 ( name = None , cursor_factory = None , scrollable = None , withhold = False )
使用连接返回一个新cursor对象。
示例:
cursor = conn.cursor()
3.excute执行sql语句
从上面cursor()后得到一个游标对象,该游标对象使用execute方法或者executemany方法执行sql语句。
cursor.execute(sql)
cursor.executemany(sql)
4.提交结果
若是增加,删除,更改表中的数据,修改后必须提交才能生效。
conn.commit()
4.获取数据
若是查询数据的时候,我们需要检索函数获取数据,常用的函数有fetchone(),fetchmany(),fetchall() 。
-
返回一个元组,元组中是结果集的下一行。当没有数据可用时,则返回None。 返回一个元组,元组中是下一组结果的结果集。当没有更多行可用时,返回一个空列表。 每次调用要获取的行数由参数指定。如果未给出,则游标arraysize确定要获取的行数。 在不传参数的情况下,默认只返回第一条数据,若是在括号里传入数字,表示获取几条数据,则最后的结果就会返回几条。 获取查询结果的所有(剩余)行,将它们作为元组列表返回。如果没有更多记录可获取,则返回一个空列表。
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()
得到结果如下图:
好啦,本文到这里就结束啦。 感谢您的阅读~