使用Python-psycopg访问postgres、openGauss、MogDB
摘要
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的更多相关文章
- python基础——访问限制
python基础——访问限制 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑. 但是,从前面Student类的定义来看,外部代码还 ...
- Python数据库访问之SQLite3、Mysql
Python数据库访问之SQLite3.Mysql 现有的数据库管理系统有很多种,本文选择介绍两种DBMS:SQLite 3 和 Mysql. SQLite 3 SQLite 3是Python 3预装 ...
- [Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子:
[Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子: mydf001=sqlContext.read.format("jdbc").o ...
- python属性访问
1.python属性访问魔法方法: >>> class C: def __getattribute__(self,name): print("getattribute&qu ...
- OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式
以最简单的4 x 5三通道图像为例,其在内存中Mat类型的数据组织形式如下: 每一行的每一列像素的三个通道数据组成一个一维数组,一行像素组成一个二维数组,整幅图像组成一个三维数组,即: Mat.dat ...
- pyinstaller打包python源程序访问hive
1.需求 使用hvie server一段时间后,业务部门需要自己不定时的查询业务数据,之前这一块都是他们提需求我们来做,后来发现这样重复一样的工作放在我们这边做是在没有效率,遂提出给他们工具或者web ...
- 使用python来访问Hadoop HDFS存储实现文件的操作
原文:http://rfyiamcool.blog.51cto.com/1030776/1258292 在调试环境下,咱们用hadoop提供的shell接口测试增加删除查看,但是不利于复杂的逻辑编程 ...
- Python变量访问权限控制
oop1.py文件代码 # user/bin/python class Foo: def bar(self): print('ok') def hello(self, name): print(&qu ...
- Python面向对象-访问限制
在Class内部,可以有字段,方法和属性,而外部代码可以通过直接调用实例变量的方法来操作数据, (1)私有普通字段 比如对于下面的Student类,name字段可以在外面通过对象进行直接访问: cla ...
- Python数据库访问公共组件及模拟Http请求
前言 最近一段时间除了忙于工作之外,在业余时,迷上了python,对它的跨平台深深的吸引.经过一段时间的自我学习,了解了其基本的语法,便开始自己着手摆弄起来.主要想把以前对接的接口再实现一次,以便于在 ...
随机推荐
- SpringMvc原理概述
目录 MVC整体架构和流程 SpringMVC 框架组件概述 SpringMVC 配置详解 springmvc.xml MVC整体架构和流程 用户发送请求至前端控制器 DispatcherServle ...
- Java 常用类 String的常用方法(1)
1 package com.bytezero.stringclass; 2 3 import org.junit.Test; 4 5 import java.sql.SQLOutput; 6 impo ...
- C++ //模板案例-数组封装类
1 //模板案例-数组封装类 2 //描述 3 //实现一个通用的数组类 4 //1.可以对内置数据类型以及自定义数据类型的数据进行储存 5 //2.将数组很脏的数据储存到堆区 6 //3.构造函数中 ...
- 如何避免MYSQL主从延迟带来的读写问题?
在MYSQL 部署架构选型上,许多公司都会用到主从读写分离的架构,如下是一个一主一从的架构,主库master负责写入,从库slave进行读取. 但是既然是读写分离,必然会面临这样一个问题,当在主库上进 ...
- git commit大文件后无法删除或撤回
可以使用版本回退的功能 先用git log 查看历史提交 用 git reset --soft 上面的编号 回退到历史提交的版本 再重新commit即可
- koa 文件下载 pdf预览 两个接口 - nodejs - chromeDownload chromePreview
koa 文件下载 pdf预览 两个接口 - nodejs - chromeDownload chromePreview chrome.js const router = require("k ...
- 动态less 解决 vue main.js
// 引入主题文件 // eslint-disable-next-line no-unused-expressions import('./theme/color/' + config.theme + ...
- Windows 安装 Rust 并设置镜像加速
目录 下载rustup-init.exe(Rust安装工具) 使用镜像加速rustup安装 安装Rust 安装标准库源码 使用镜像加速cargo包下载 安装结果确认 更新.卸载和文档查看 参考文档 下 ...
- KETTLE4个工作中有用的复杂实例--2、两表数据比较,循环取数据,比较后自动同步(部门、单位数据同步)
附:Kettle实战视频教程,需要的朋友可以看看学习下哈~~ kettle实战第一讲-文件和数据库表的互相转换处理_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili kettle实战第二讲-数据库单 ...
- 阿里云配置http转https
参考:https://www.cnblogs.com/alexfly/p/10615986.htmlhttps://www.cnblogs.com/SemiconductorKING/p/910697 ...