Python操作Firebird,各种踩坑终归不辱使命
本篇内容:
Python连接Firdbird
安装Firebird Client(Win64 和 Mac OS)
坑1:数据库管理工具的中文
坑2:Python脚本中的引号
修正脚本 & 整体源码
01
—
Python连接Firebird
步骤:
安装fdb:pip install fdb
安装Firebird客户端
编写脚本,测试连接
FDB 是基于Firebird客户端库文件(fbclient.so/dll),用c*写的纯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
相关文章