摘要

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 的操作系统,其他系统可能遇到不同问题,可以评论区留言。

使用Python-psycopg访问postgres、openGauss、MogDB的更多相关文章

  1. python基础——访问限制

    python基础——访问限制 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑. 但是,从前面Student类的定义来看,外部代码还 ...

  2. Python数据库访问之SQLite3、Mysql

    Python数据库访问之SQLite3.Mysql 现有的数据库管理系统有很多种,本文选择介绍两种DBMS:SQLite 3 和 Mysql. SQLite 3 SQLite 3是Python 3预装 ...

  3. [Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子:

    [Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子: mydf001=sqlContext.read.format("jdbc").o ...

  4. python属性访问

    1.python属性访问魔法方法: >>> class C: def __getattribute__(self,name): print("getattribute&qu ...

  5. OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式

    以最简单的4 x 5三通道图像为例,其在内存中Mat类型的数据组织形式如下: 每一行的每一列像素的三个通道数据组成一个一维数组,一行像素组成一个二维数组,整幅图像组成一个三维数组,即: Mat.dat ...

  6. pyinstaller打包python源程序访问hive

    1.需求 使用hvie server一段时间后,业务部门需要自己不定时的查询业务数据,之前这一块都是他们提需求我们来做,后来发现这样重复一样的工作放在我们这边做是在没有效率,遂提出给他们工具或者web ...

  7. 使用python来访问Hadoop HDFS存储实现文件的操作

    原文:http://rfyiamcool.blog.51cto.com/1030776/1258292 在调试环境下,咱们用hadoop提供的shell接口测试增加删除查看,但是不利于复杂的逻辑编程 ...

  8. Python变量访问权限控制

    oop1.py文件代码 # user/bin/python class Foo: def bar(self): print('ok') def hello(self, name): print(&qu ...

  9. Python面向对象-访问限制

    在Class内部,可以有字段,方法和属性,而外部代码可以通过直接调用实例变量的方法来操作数据, (1)私有普通字段 比如对于下面的Student类,name字段可以在外面通过对象进行直接访问: cla ...

  10. Python数据库访问公共组件及模拟Http请求

    前言 最近一段时间除了忙于工作之外,在业余时,迷上了python,对它的跨平台深深的吸引.经过一段时间的自我学习,了解了其基本的语法,便开始自己着手摆弄起来.主要想把以前对接的接口再实现一次,以便于在 ...

随机推荐

  1. 【Azure Redis 缓存】Azure Cache for Redis 是否记录具体读/写(Get/Set)或删除(Del)了哪些key呢?

    问题描述 在Azure Redis的门户活动日志中,可以查看到的是对于Redis资源本身的操作.但是对于客户端连接到Redis服务后,对服务所做出的读写,或删除操作,是否有日志可以查看到呢? 问题回答 ...

  2. kubernetes 1.20版本 二进制部署

    kubernetes 1.20版本 二进制部署 目录 kubernetes 1.20版本 二进制部署 1. 前言 2. 环境准备 2.1 机器规划 2.2 软件版本 3. 搭建集群 3.1 机器基本配 ...

  3. FastWiki v0.1.0发布!新增超多功能

    FastWiki 发布 v0.1.0 https://github.com/239573049/fast-wiki/releases/tag/v0.1.0 更新日志 兼容OpenAI接口格式 删除Bl ...

  4. leetcode数据库sql之Department Top Three Salaries

    leetcode原文引用: How would you print just the 10th line of a file? For example, assume that file.txt ha ...

  5. RunOnWeb - 创建新协议,支持html调用本地可执行文件,支持浏览器互相调用

    浏览器调用 exe ?    Yes!  谷歌 Chrome 启动微软 Edge ?     Yes! RunOnWeb 协议 创建新协议,支持html调用本地可执行文件,支持浏览器互相调用 [最新版 ...

  6. AOSP编译成功后关闭终端emulator命令找不到

    当我们编译好AOSP系统源码后,可以通过emulator命令打开模拟器,但是当我们关闭终端后,在次打开终端输入emulator命令,提示未找到命令: 此时我们需要重新执行下面语句 source bui ...

  7. 基于webpack与TypeScript的SolidJS项目搭建

    本文将讲述如何基于webpack与TypeScript搭建一个基础的支持less模块的solidjs项目.方便后续涉及到solidjs相关分析与讨论都可以基于本文的成果之上进行. 前置 nodejs ...

  8. 工具推荐-sourcetree

    工具推荐-sourcetree 简介 简单好用的win系统下的git可视化软件 支持ssh免密登录 一键暂存和上传到开源仓库 开源免费 安装 下载sourcetree sourcetree下载 下载g ...

  9. CornerNet:经典keypoint-based方法,通过定位角点进行目标检测 | ECCV2018

    论文提出了CornerNet,通过检测角点对的方式进行目标检测,与当前的SOTA检测模型有相当的性能.CornerNet借鉴人体姿态估计的方法,开创了目标检测领域的一个新框架,后面很多论文都基于Cor ...

  10. kingbaseES sql 优化技巧汇总

    1.整体思路 针对业务系统的出现的慢sql 我们的优化步骤大概分为以下几步 1.识别高负载语句 2.收集性能相关的数据 3.确定性能问题产生的原因 4.实施优化手段 下面我们针对这几个步骤展开进行讲解 ...