Python使用psycopg2三方庫操作PostgreSQL的資料
psycopg2,是Python語言的PostgreSQL資料庫介面,它的主要優勢在於完全支援Python DB API 2.0,以及安全的多執行緒支援。它適用於隨時建立、銷燬大量遊標的、和產生大量併發INSERT、UPDATE操作的多執行緒資料庫應用。本文簡單介紹了使用psycopg2對PostgreSQL增刪改查的基本操作,供參考。
首先,要安裝python,pip以及psycopg2。
[xmaster@mogdb-kernel-0005 demo2]$ python3 --version Python 3.6.8[xmaster@mogdb-kernel-0005 demo2]$ pip3 --version pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6) [xmaster@mogdb-kernel-0005 ~]$ pip3 install psycopg2 Collecting psycopg2 Installing collected packages: psycopg2 Successfully installed psycopg2-2.9.4
可以使用pip list檢視是否安裝該類庫
[xmaster@mogdb-kernel-0005 ~]$ pip3 list --format=columns| grep psycopg2 psycopg2 2.9.4
一、select操作
編輯python程式碼檔案psycopg2_demo.py ,內容如下
#!/usr/bin/env python # -*- coding:utf-8 -*-import psycopg2 '''連線串'''conn = psycopg2.connect(database="postgres", user="puser", password="Enmo@123", host="172.16.0.176", port="5432")'''開啟遊標'''cur = conn.cursor()'''執行語句'''cur.execute("select * from public.demotable limit 10;")'''獲取結果集的每一行'''rows = cur.fetchall()'''迴圈輸出結果行'''for row in rows: print(row)'''關閉遊標'''conn.close()
初次執行程式碼報錯了,是沒找到libpq.so.5的位置,
[xmaster@mogdb-kernel-0005 demo2]$ python3 psycopg2_demo.py Traceback (most recent call last): File "psycopg2_demo.py", line 1, in <module> import psycopg2 File "/usr/local/lib64/python3.6/site-packages/psycopg2/__init__.py", line 51, in <module> from psycopg2._psycopg import ( # noqaImportError: libpq.so.5: cannot open shared object file: No such file or directory
解決方法為:
[root@mogdb-kernel-0005 lib64]# cd /etc/ld.so.conf.d[root@mogdb-kernel-0005 ld.so.conf.d]# lsbind-export-x86_64.conf kernel-4.18.0-348.7.1.el8_5.x86_64.conf kernel-4.18.0-80.el8.x86_64.conf oracle-instantclient.conf [root@mogdb-kernel-0005 ld.so.conf.d]# ps -ef | grep postgres | grep xmasterxmaster 182525 1 0 Oct15 ? 00:00:00 /opt/ysl_pg14/soft/bin/postgres -D /opt/ysl_pg14/data xmaster 182526 182525 0 Oct15 ? 00:00:00 postgres: enmo_6001: logger xmaster 182528 182525 0 Oct15 ? 00:00:00 postgres: enmo_6001: checkpointer xmaster 182529 182525 0 Oct15 ? 00:00:00 postgres: enmo_6001: background writer xmaster 182530 182525 0 Oct15 ? 00:00:00 postgres: enmo_6001: walwriter xmaster 182531 182525 0 Oct15 ? 00:00:00 postgres: enmo_6001: autovacuum launcher xmaster 182532 182525 0 Oct15 ? 00:00:01 postgres: enmo_6001: stats collector xmaster 182533 182525 0 Oct15 ? 00:00:00 postgres: enmo_6001: logical replication launcher [root@mogdb-kernel-0005 ld.so.conf.d]# echo "/opt/ysl_pg14/soft/lib" >pgsql.conf[root@mogdb-kernel-0005 ld.so.conf.d]# ldconfig
再次執行,結果如下,其中Decimal模組旨在支援"無偏差,精確無舍入的十進位制算術(有時稱為定點數算術)和有舍入的浮點數算術"。
[root@mogdb-kernel-0005 ld.so.conf.d]# su - xmasterLast login: Mon Oct 17 16:05:10 CST 2022 on pts/2[xmaster@mogdb-kernel-0005 ~]$ cd python/demo2/ [xmaster@mogdb-kernel-0005 demo2]$ python3 psycopg2_demo.py (Decimal('204.649350891795'), 1) (Decimal('413.041252643858'), 2) (Decimal('172.191698622928'), 3) (Decimal('82.1547082639427'), 4) (Decimal('204.480204721943'), 5) (Decimal('992.275551901436'), 6) (Decimal('382.85296867706'), 7) (Decimal('530.280781107436'), 8) (Decimal('655.705775705879'), 9) (Decimal('245.699153678395'), 10)
二、insert和update操作
insert和update的如下
#!/usr/bin/env python # -*- coding:utf-8 -*-import psycopg2 '''連線串'''conn = psycopg2.connect(database="postgres", user="puser", password="Enmo@123", host="172.16.0.176", port="5432")'''開啟遊標'''cur = conn.cursor()'''執行語句'''sql1="insert into public.demotable values('0',0)"sql2="update public.demotable set num='111' where id=0 "cur.execute(sql1) print('insert success!') cur.execute(sql2) print('update succes!')'''提交操作'''conn.commit()'''關閉遊標'''conn.close()
執行效果如下
[xmaster@mogdb-kernel-0005 demo2]$ psql -d postgres -c "select * from public.demotable where id=0" num | id -----+---- (0 rows) [xmaster@mogdb-kernel-0005 demo2]$ python3 psycopg2_demo.py insert success! update succes! [xmaster@mogdb-kernel-0005 demo2]$ psql -d postgres -c "select * from public.demotable where id=0" num | id -----+---- 111 | 0(1 row)
三、delete操作
delete操作的程式碼如下
#!/usr/bin/env python # -*- coding:utf-8 -*-import psycopg2 '''連線串'''conn = psycopg2.connect(database="postgres", user="puser", password="Enmo@123", host="172.16.0.176", port="5432")'''開啟遊標'''cur = conn.cursor()'''執行語句'''sql1="delete from public.demotable where id=0"cur.execute(sql1) print('delete success!')'''提交操作'''conn.commit()'''關閉遊標'''conn.close()
結果如下
[xmaster@mogdb-kernel-0005 demo2]$ psql -d postgres -c "select * from public.demotable where id=0" num | id -----+---- 111 | 0(1 row) [xmaster@mogdb-kernel-0005 demo2]$ python3 psycopg2_demo.py delete success! [xmaster@mogdb-kernel-0005 demo2]$ psql -d postgres -c "select * from public.demotable where id=0" num | id -----+---- (0 rows)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69990629/viewspace-2919712/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- postgresql 資料庫基本操作SQL資料庫
- C#/Python/MATLAB操作PostgreSQL資料庫C#PythonMatlabSQL資料庫
- python的ORM技術:使用sqlalchemy操作mysql資料庫PythonORMMySql資料庫
- 【Falsk 使用資料庫】---- 資料庫基本操作資料庫
- Python操作SQLite資料庫PythonSQLite資料庫
- Python 操作 SQLite 資料庫PythonSQLite資料庫
- python資料庫(mysql)操作Python資料庫MySql
- python 操作mysql資料庫PythonMySql資料庫
- Python Mysql 資料庫操作PythonMySql資料庫
- python操作mysql資料庫PythonMySql資料庫
- python操作mongodb資料庫PythonMongoDB資料庫
- 在C、JAVA、PHP中操作postgreSql資料庫 (轉)JavaPHPSQL資料庫
- psycopg2 修改資料庫客戶端字符集資料庫客戶端
- Python3.5使用pymongo(3.3.1)操作mongodb資料庫PythonMongoDB資料庫
- 使用mysql-connector-python操作MYSQL資料庫MySqlPython資料庫
- Spring Boot中使用PostgreSQL資料庫Spring BootSQL資料庫
- Laravel 使用 PostgreSQL 資料庫需要注意的點LaravelSQL資料庫
- python+資料庫(三)用python對資料庫基本操作Python資料庫
- Python操作MongoDB文件資料庫PythonMongoDB資料庫
- Python 資料庫騷操作 — RedisPython資料庫Redis
- Python資料庫MongoDB騷操作Python資料庫MongoDB
- Python 資料庫騷操作 -- RedisPython資料庫Redis
- Python之 操作 MySQL 資料庫PythonMySql資料庫
- Python 資料庫騷操作 -- MongoDBPython資料庫MongoDB
- python 操作 PostgreSQL 資料庫,執行緒並行修改 5w 條資料,效能優化PythonSQL資料庫執行緒並行優化
- 使用OTL操作MySQL資料庫MySql資料庫
- PostgreSQL:資料庫的選擇SQL資料庫
- Django資料庫效能優化之 - 使用Python集合操作Django資料庫優化Python
- 【Python】基於pymysql的資料庫操作類PythonMySql資料庫
- Python操作MySQL資料庫的5種方式PythonMySql資料庫
- Python操作三大主流資料庫Python資料庫
- Python操作Redis快取資料庫PythonRedis快取資料庫
- python資料庫操作 - PyMySQL入門Python資料庫MySql
- 01-python操作Mysql資料庫PythonMySql資料庫
- python sqlite3 資料庫操作PythonSQLite資料庫
- Python資料分析庫pandas基本操作Python
- Python3 MySQL 資料庫操作PythonMySql資料庫
- python資料庫-MySQL資料庫高階查詢操作(51)Python資料庫MySql