首页 > 系统相关 >Windows下python,psycopg2连接HGDB

Windows下python,psycopg2连接HGDB

时间:2023-09-07 17:37:22浏览次数:42  
标签:Users highgo Windows psycopg2 HGDB python Highgo --

瀚高数据库

目录

环境

文档用途

详细信息



环境

系统平台:N/A

版本:4.5


文档用途

  本文介绍在HGDB使用sm3认证时,python使用psycopg2连接HGDB的方法。


详细信息

  Python连接HGDB可以使用psycopg2、Django,Django是依赖psycopg2的,底层用的都是libpq,pip安装的psycopg2自带libpq。因此在一般情况下pip安装psycopg2后可以直接连接HGDB。在一些情况下HGDB需要使用sm3密码认证方式,此时使用psycopg2自带的libpq是无法连接HGDB的,报错:“authentication method 13 not supported”;可以按照以下方式处理。

  Linux下psycopg2连接HGDB查阅文章:【python应用系统访问瀚高库(APP);ID:018380901】。

  Windows参考以下几个方法:

方法一:更改数据库认证方式

  条件允许的情况下,将HGDB的认证方式由sm3改为md5;一定确认好是否可以修改,修改时必须仔细操作。

方法二:自己编译psycopg2

  1)由于pip安装的psycopg2自带libpq,因此使用“pip install --no-binary :all: psycopg2”安装,使之不自带libpq,安装完毕后,使用HGDB提供的libpq动态库。

  2)将附件中的hgdb文件夹放在任意位置(路径建议只包含中文和数字),并配置环境变量,如:

Windows下python,psycopg2连接HGDB_hg

cmd中验证pg_config可以访问到,如:

C:\Users\Highgo>pg_config
    BINDIR = C:/Users/Highgo/highgo/bin
    DOCDIR = C:/Users/Highgo/highgo/doc
    HTMLDIR = C:/Users/Highgo/highgo/doc
    INCLUDEDIR = C:/Users/Highgo/highgo/include
    PKGINCLUDEDIR = C:/Users/Highgo/highgo/include
    INCLUDEDIR-SERVER = C:/Users/Highgo/highgo/include/server
    LIBDIR = C:/Users/Highgo/highgo/lib
    PKGLIBDIR = C:/Users/Highgo/highgo/lib
    LOCALEDIR = C:/Users/Highgo/highgo/share/locale
    MANDIR = C:/Users/Highgo/highgo/man
    SHAREDIR = C:/Users/Highgo/highgo/share
    SYSCONFDIR = C:/Users/Highgo/highgo/etc
    PGXS = C:/Users/Highgo/highgo/lib/pgxs/src/makefiles/pgxs.mk
    CONFIGURE = --enable-thread-safety --enable-nls --with-ldap --enable-FDE --enable-license --with-openssl --with-ossp-uuid --with-libxml --with-libxslt --with-perl
    VERSION = PostgreSQL 12.3


 3)安装Microsoft C++ Build Tools工具,用于源码构建psycopg2。vs_BuildTools下载地址:https://download.visualstudio.microsoft.com/download/pr/67cb4c13-1e6d-4bf5-97ed-93636beebd7d/bbd9e99e837140cc7838ec63d0609c5e63ff43001cfa1e558b48db235f015237/vs_BuildTools.exe;选择需要的组件,如下:

Windows下python,psycopg2连接HGDB_Python_02


安装过程较长,所占空间比较大。

  4)卸载已安装的psycopg2;

  5)编译构建psycopg2;

C:\Users\Highgo>pip install --no-binary :all: psycopg2
Collecting psycopg2
  Using cached psycopg2-2.9.7.tar.gz (383 kB)
Skipping wheel build for psycopg2, due to binaries being disabled for it.
Installing collected packages: psycopg2
   Running setup.py install for psycopg2 ... done
Successfully installed psycopg2-2.9.7


 6)将附件hgdb中的lib和bin下的文件全部复制到python安装目录下的$PYTHON_HOME\Lib\site-packages\psycopg2下,如:

Windows下python,psycopg2连接HGDB_Python_03

 7)重新打开cmd,测试python连接数据库,python脚本如下:

import psycopg2
conn = psycopg2.connect(
    host="192.168.17.75",
    port="5867",
    database="highgo",
    user="sysdba",
    password="password"
)
cur = conn.cursor()

cur.execute("SELECT * FROM tbl_sm3")
rows = cur.fetchall()
for row in rows:
    print(row)

cur.execute("INSERT INTO tbl_sm3 (c1, c2) VALUES (%s, %s)", ("1", "2"))
conn.commit()
cur.close()
conn.close()


 8)测试:

C:\Users\Highgo>cd C:\Users\Highgo\Python
C:\Users\Highgo\Python>python testDB.py
(1, '2')
(1, '2')
(1, '2')
(1, '2')


以上实现了sm3认证连接。

 9)常见报错

 > UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\u200e’ in position 13: ordinal not in range(128)

 解决:chcp 65001







标签:Users,highgo,Windows,psycopg2,HGDB,python,Highgo,--
From: https://blog.51cto.com/u_13646489/7398856

相关文章

  • python爬取网站数据笔记分享
    编码问题因为涉及到中文,所以必然地涉及到了编码的问题,借这个机会算搞清楚。问题要从文字的编码讲起。原本的英文编码只有0~255,刚好是8位1个字节。为了表示各种不同的语言,自然要进行扩充。中文的话有GB系列。可能还听说过Unicode和UTF-8,那么,它们之间是什么关系呢?Unicode是一种编码方......
  • Python的pandas库:数据分析工具
    在Python的数据分析领域,pandas库是一个非常强大的工具。它提供了一种灵活的数据结构,可以帮助我们轻松地处理和分析数据。本文将详细介绍pandas库的主要功能和用法,并通过具体案例进行说明。安装与导入首先,确保已经安装了pandas库。如果尚未安装,可以使用以下命令在Python环境中安装:pi......
  • Python语法(1)
    我们准备开始学习python语法,大概会分为几个上传,但都已经排好序这里我们主要通过和C语言进行比较着学习,方便明白区别和相同语法基础首先我们需要熟悉Python语言中的语法规则:变量常见的数据类型:int整数123float浮点数1.34str字符串'python'bool布尔类型T......
  • Python名称空间和作用域,闭包函数
    Python名称空间和作用域,闭包函数名称的查询顺序名称空间的作用域global和nonlocal关键字的使用函数对象(函数名)函数的嵌套调用函数的嵌套定义闭包函数名称空间定义#什么是名称空间? 名称空间即存放名字与对象映射/绑定关系的地方。 就是存放变量名与变量值关系的地......
  • locust:Python 分布式压力测试(带WebUI)
    Locust介绍它采用纯Python实现,是一个分布式用户负载测试的工具。使用基于Requests库的客户端发起请求,使编写脚本大大简化;在模拟并发方面摒弃进程和线程,完全基于时间驱动,采用协程(gevent)提供的非阻塞IO和coroutine来实现网络层的并发请求。因此单台压力机也能产生数......
  • Python预安装包制作
    预编译安装包在Linux服务器上,经常会安装Python、Redis、Nginx等服务,不管离线、在线都需要编译、编译之前还需要安装一些依赖的环境,比如,openssl、gcc、g++等,但是make编译的时间过于长,严重影响心情,希望制作一个符合当前系统的预先编译好的包,可以拿来即用的。编译Python3.9.8在......
  • Windows Server 2016 更改远程桌面端口
     WindowsServer2016更改远程桌面端口操作步骤:步骤一:在服务器运行窗口中输入“regedit”打开注册表编辑器。 步骤二:在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\Wds\rdpwd\Tds\tcp目录下,修改PortNumber数值,将其修改为你想要的修改的......
  • Python循环语句
    Python循环语句while基础使用条件需提供布尔类型结果,True继续,False停止规划好循环终止条件,否则会一直循环i=0whilei<100:print("输出了",i,"次哈哈哈")i+=1#结果输出了0次哈哈哈输出了1次哈哈哈输出了2次哈哈哈输出了3次哈哈哈...省......
  • 七天入门Python(一)
    七天入门Python(一)大家好,我是Antvictor,一个励志要成为架构师的程序员。闲话少说,接下来请和我一起进入《七天入门Python》,首先是Python安装。Python安装从Python官网找到Download下载对应的安装包,python3.6及以上即可。Python官网会根据系统默认展示对应系统的最新版本安装包,下载成......
  • 8天长假快来了,Python分析【去哪儿旅游攻略】数据,制作可视化图表
    目录前言环境使用模块使用数据来源分析代码实现导入模块请求数据解析保存数据可视化导入模块、数据年份分布情况月份分布情况出行时间情况费用分布情况人员分布情况前言2023年的中秋节和国庆节即将来临,好消息是,它们将连休8天!这个长假为许多人提供了绝佳的休闲机会,让许多人都迫不......