摘要

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 Notification Hub】如何手动删除 Notification Hub 中已注册的设备

    问题描述 在Notification Hub中注册了设备后,从Azure门户上没有找到相应的入口来删除已注册设备 (Active Devices) 如果使用C# SDK是否有办法删除呢? 问题解答 可 ...

  2. 【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常

    问题描述 在Java项目中,使用Redisson作为连接Redis的客户端,间歇性的出现了DNS Monitor throwable 错误. DNSMonitor throwable="ja ...

  3. Python 潮流周刊第 40 期(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  4. Apache Hudi 在 vivo 湖仓一体的落地实践

    作者:vivo 互联网大数据团队 - Xu Yu 在增效降本的大背景下,vivo大数据基础团队引入Hudi组件为公司业务部门湖仓加速的场景进行赋能.主要应用在流批同源.实时链路优化及宽表拼接等业务场景 ...

  5. Java 类方法的声明和使用

    1 /** 2 * 3 * @Description 4 * @author Bytezero·zhenglei! Email:420498246@qq.com 5 * @version 6 * @d ...

  6. jenkins 钉钉机器人插件

    官方文档: https://jenkinsci.github.io/dingtalk-plugin/guide/getting-started.html#%E6%B3%A8%E6%84%8F 注意:系 ...

  7. 10、zookeeper客户端curator

    curator介绍 https://blog.csdn.net/wo541075754/article/details/68067872 关于第三方客户端的小介绍 zkClient有对dubbo的一些 ...

  8. ThinkPHP6 事件的简单应用

    一.序章 ThinkPHP6的手册中关于[事件]章节的介绍都是直接文字说明,给出创建的类文件,并没有一个好的示例来进行补充说明.对于刚接触[事件]的同学在阅读理解上增加了一点点困难,本文就在此结合示例 ...

  9. 【技术积累】Java 8 新特性

    一.Lambda表达式 Lambda 是一个匿名函数,我们可以把 Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递).可以写出更简洁.更灵活的代码.作为一种更紧凑的代码风格,使J ...

  10. [VueJsDev] 基础知识 - Button的全局节流

    [VueJsDev] 目录列表 https://www.cnblogs.com/pengchenggang/p/17037320.html Button的全局节流 ::: details 目录 目录 ...