首页 > 编程语言 >使用Python-psycopg访问postgres、openGauss、MogDB

使用Python-psycopg访问postgres、openGauss、MogDB

时间:2024-03-20 14:35:12浏览次数:23  
标签:postgres python3.7 Python py MogDB -- Sep usr

摘要
Psycopg 是一种用于执行 SQL 语句的 PythonAPI,可以为 PostgreSQL、GaussDB 数据库提供统一访问接口,应用程序可基于它进行数据操作。Psycopg2 是对 libpq 的封装,主要使用 C 语言实现,既高效又安全。它具有客户端游标和服务器端游标、异步通信和通知、支持“COPY TO/COPY FROM”功能。支持多种类型 Python 开箱即用,适配 PostgreSQL 数据类型;通过灵活的对象适配系统,可以扩展和定制适配。Psycopg2 兼容 Unicode 和 Python 3。

获取安装包
下载地址:https://opengauss.org/zh/download/
选择你需要的版本进行下载。

安装驱动
解压安装包
[postgres@10 ~]$ tar -zxvf openGauss-2.1.0-CentOS-x86_64-Python.tar.gz
[postgres@10 ~]$ cd psycopg2/
[postgres@10 psycopg2]$ ll
total 1224
-rw-r--r-- 1 postgres postgres 14277 Sep 28 20:08 errorcodes.py
-rw-r--r-- 1 postgres postgres 1425 Sep 28 20:08 errors.py
-rw-r--r-- 1 postgres postgres 6797 Sep 28 20:08 extensions.py
-rw-r--r-- 1 postgres postgres 42863 Sep 28 20:08 extras.py
-rw-r--r-- 1 postgres postgres 4768 Sep 28 20:08 init.py
-rw-r--r-- 1 postgres postgres 2922 Sep 28 20:08 _ipaddress.py
-rw-r--r-- 1 postgres postgres 7153 Sep 28 20:08 _json.py
-rw-r--r-- 1 postgres postgres 6316 Sep 28 20:08 pool.py
-rwxr-xr-x 1 postgres postgres 1104672 Sep 30 14:41 _psycopg.so
-rw-r--r-- 1 postgres postgres 17608 Sep 28 20:08 _range.py
-rw-r--r-- 1 postgres postgres 14699 Sep 28 20:08 sql.py
-rw-r--r-- 1 postgres postgres 4870 Sep 28 20:08 tz.py
找到 python 安装目录
[postgres@10 psycopg2]$ whereis python
python: /usr/bin/python3.7 /usr/bin/python3.7m /usr/bin/python3.7-config /usr/bin/python3.7m-config /usr/bin/python3.7m-x86_64-config /usr/lib/python3.7 /usr/lib/python2.7 /usr/lib64/python3.7 /usr/lib64/python2.7 /usr/local/lib/python3.7 /usr/include/python3.7m /usr/include/python2.7-debug /usr/include/python2.7
我的服务器上面有两个版本的 python,分别是 python3.7 和 python2.7。

找到 site-packages 目录
[postgres@10 lib]$ pwd
/usr/lib
[postgres@10 lib]$ ll python
python2.7/ python3.7/
使用 root 用户将 psycopg2 目录 copy 到对应版本的 site-packages 目录下
[root@10 postgres]# cp -r /home/postgres/psycopg2/ /usr/lib/python3.7/site-packages/
赋权
[root@10 site-packages]# chmod -R 775 psycopg2/
测试
[postgres@10 ~]$ python3
Python 3.7.9 (default, Jan 25 2022, 15:12:36)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

import psycopg2
conn=psycopg2.connect(database="postgres",user="postgres",password="****** ",host="localhost",port=5432)
cur=conn.cursor()
cur.execute("CREATE TABLE student(id integer,name varchar,sex varchar);")
cur.execute("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",(1,'Aspirin','M'))
cur.execute("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",(2,'Taxol','F'))
cur.execute('SELECT * FROM student')
results=cur.fetchall()
print (results)
[(1, 'Aspirin', 'M'), (2, 'Taxol', 'F')]
conn.commit()
cur.close()
conn.close()

FQA
第一次尝试的时候使用的是centos_x86_64版本,测试是会报错。

import psycopg2
Traceback (most recent call last):
File "", line 1, in
File "/usr/local/lib/python3.6/site-packages/psycopg2/init.py", line 51, in
from psycopg2._psycopg import ( # noqa
ImportError: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory
试图通过编译安装 3.6 版本解决这个问题,但是编译安装后没有编译出libpython3.6m.so.1.0,只有libpython3.6m.a。

后来直接下载openeuler_x86_64版本,问题解决。PS. 我是 kylin v10 的操作系统,其他系统可能遇到不同问题,可以评论区留言。

标签:postgres,python3.7,Python,py,MogDB,--,Sep,usr
From: https://www.cnblogs.com/helloopenGauss/p/18085129

相关文章

  • Python-Openpyxl使用教程
    在数据处理和报表生成过程中,Excel是一个经常使用的工具。Python中的openpyxl库可以让您通过编程方式读取、写入和操作Excel文件,从而实现自动化的数据处理和报表生成。本文将介绍openpyxl库的基本用法和常见操作,帮助您快速上手使用Python处理Excel文件。安装openpyxl首先,您需要......
  • 9个用Python就可以搞副业的方法!值得收藏
    1、抢茅台全民开抢1499元的茅台,你抢到过吗?我表弟去年开始到现在抢到30+瓶,一瓶轻松赚1000元。没想到表弟私信我说,他的茅台都是用软件抢的。Python是啥?我是2G网了吗,还有这么好用的工具!?不查不知道,一查吓一跳,原来早就有人用Python来搞各种“代抢”了,还能拿来轻松找书源......
  • 绝了!同事用Python做副业月入3万!
    当代年轻人什么最重要?当然是搞钱最重要!毕竟,租房子要钱,吃饭要钱,上下班的公交地铁也要花钱。但是小编却不得不承认:自己完全是在“自费打工”。啥是“自费打工”?是说工资到手之后,交了房租水电,再扣掉还花呗信用卡的钱,不仅一分钱没挣到,还因为迟到被扣了全勤。。。如此扎心,......
  • Python设计模式,可以采用单例模式+工厂方法吗?
    背景:今天看卡尔的设计模式,突然间,觉得可以把单例模式+工厂方法结合起来。不知道能不能行,咨询下AI,觉得可以。就mark一下问题:python中我有一个项目,有4个场景,我想创建一个基类,然后写4个具体实现的工厂,并继承这个基类,我为了防止这个基类创建多次,我是不是可以用单例模式?也就说我可......
  • [转]Python格式化字符串的4种方式
     文章目录Python格式化字符串的4种方式一:%号二:str.format三:f-Strings四:标准库模板五:总结四种方式的应用场景 Python格式化字符串的4种方式一:%号%号格式化字符串的方式从Python诞生之初就已经存在时至今日,python官方也并未弃用%号,但也并不推荐这种格式化方式......
  • Python APScheduler介绍及使用
    在许多应用程序中,需要定期执行某些任务,例如发送电子邮件、生成报告或清理临时文件等。为了管理和调度这些任务,Python中有许多优秀的调度器库,其中APScheduler是一个流行且功能强大的选择。本文将介绍APScheduler的基本概念,并展示如何使用它来实现定时任务调度。一、APScheduler简......
  • python自动化——selenium——教程截图笔记复习
      需要现在和浏览器对应的驱动:               123 123......
  • AI回答:python中如何实现[异或]的?什么是异或?
    问题:python中如何实现[异或]的?什么是异或?AI:异或(ExclusiveOR,简称XOR)是一种二进制运算,符号通常为"^"。在这种运算中,如果两个比较的位(bit)相同,则结果为0;如果两个比较的位不同,则结果为1。异或运算在计算机科学中有着广泛的应用,比如在错误检测和校正、密码学以及某些算法中。在Pyt......
  • 如何自己写一个Python库
    一文搞懂如何自己写一个Python库你是否有过疑问,通过pip安装的库都是如何编写的?你是否曾想过为自己的Python项目编写一个库,以便在不同项目中重复使用代码?并且能在PyPI仓库中发布,并通过pipinstall库名来安装使用1.png 编写Python库可能看起来有些复杂,但实际上并非如此。本......
  • Ubuntu 上安装python2.7
    Ubuntu20.04LTS默认安装的是python3,如果需要使用python2.7,需要自己进行安装。一、启用Universe仓库一般情况下其实应该是已经启用了,但是还是记录一下手动添加的方法sudoapt-add-repositoryuniversesudoaptupdate二、安装python2.7使用以下命令安装python2.7sudoapt......