ITPub博客

首页 > 数据库 > > Python操作Firebird,各种踩坑终归不辱使命

Python操作Firebird,各种踩坑终归不辱使命

作者:u_9ff4c058a0e0 时间:2022-03-17 14:49:32 0 删除 编辑

本篇内容:

  • Python连接Firdbird

  • 安装Firebird Client(Win64 和 Mac OS)

  • 坑1:数据库管理工具的中文

  • 坑2:Python脚本中的引号

  • 修正脚本 & 整体源码



01

—

Python连接Firebird


步骤:

  • 安装fdb:pip install fdb

  • 安装Firebird客户端

  • 编写脚本,测试连接


FDB 是基于Firebird客户端库文件(fbclient.so/dll),用ctypes写的纯python模块,因此,使用FDB前,要确保firebird客户端正确安装


02

—

安装Firebird Client


那么,如何安装Firebird Client?


在我的工作中,要用Mac和Win64,在这两个系统中安装Firebird Client时,遇到的问题不一样,所以,都记录一下


官网:

http://firebirdsql.org/en/firebird-3-0/


安装完成,Win64系统连接Firebird的Python脚本就通了


Mac OS,下载pkg安装后,建立软连接:

sudo ln -s /Library/Frameworks/Firebird.framework/Versions/A/Libraries/libfbclient.dylib /usr/local/lib/libfbclient.dylib


在python脚本中,添加「fb_library_name='libfbclient.dylib'」

03

—

坑1:数据库管理工具的中文


有没有类似Navicat的工具,方便管理Firebird数据库?


我用的是「DBeaver」(之前还用过一个其它的,需要破解,太麻烦了)

DBeaver不需要破解


DBeaver连接数据库后,中文是乱码

没找到方法怎么让它正确展示中文


但是,用Python脚本读取出来,中文可以正确展示

所以,我没理会DBeaver中文展示乱码的问题


因为要往Firebird数据库中插入数据,我把脚本中要用的Insert语句,复制到DBeaver中执行,以验证SQL是否正确


结果,总是出现下图的错误

我以为我的SQL写的不对,调了半天


最后,发现python脚本执行该SQL是通过的

我把DBeaver中执行的SQL,中文改成字母和数字,调试也通过了


几经倒腾,我发现原来是SQL语句中的「性别」乱码时展示的是「'Ů'」

将该字符替换为「'男'」会报上图的SQL错误

若替换为「'1'」或「'y'」等非中文字符,或保持原来的「'Ů'」

则可以成功


我想这和字符的长度占位有关,果然,我把「性别」替换为「'aa'」没有问题

替换为「'aaa'」则又出现上图的SQL错误



04

—

坑2:Python脚本中的引号


这是我犯的一个低级错误


我在编写python脚本的过程中,习惯用单引号

当字符串中还需要引号时,我会用双引号或三引号


就是下图,双引号套单引号

如若把「id='{}'」写成了单引号套双引号,即「id="{}"」,是要报错的哦


在DBeaver中执行SQL语句,也是一样的


05

—

修正脚本 & 整体源码


最后,回到之前的文章:《在测试工作中,会点代码,是怎样的体验》--- 用Python编程实现了,往Oracle数据库插入上游数据

第4节,修正一下脚本的异常处理「try...except」应是「try...finally」

最最后,整体的源码

来源 https://mp.weixin.qq.com/s/BQb0lW6R2ufd-_DKQEacNQ

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69999831/viewspace-3167131/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2022-02-11

  • 博文量
    1828
  • 访问量
    20542