用户环境:Windows10、Python3.8
一、在本地Python环境下连接阿里云的图数据库GDB步骤如下:
(1)在阿里云的控制台创建一个图数据库实例
(2)图数据库建立用户,获取用户名和密码
(3)在安全性管理中,将default组的白名单网址改为0.0.0.0/0并保存
(4)申请外网地址,获取外网地址和端口
(5)在cmd中测试地址和端口是否可用
ping ip # 测试地址是否可用
telnet ip port # 测试地址和端口是否可以访问
二、基于Python操作GDB,报错NotImplementedError
主要的官方参考文档是:https://help.aliyun.com/document_detail/107480.html?spm=a2c4g.11186623.6.602.7e8653e1Ynodfm
在使用测试用例时,遇到了下面的报错:
主要问题:Python的版本与gremlinpython的依赖包tornado的版本不兼容的问题。在Python中使用pip install gremlinpython安装时,会自动安装它的依赖包tornado=5.1,这个包的5.1版本跟Python2.7和3.6是兼容的,所以在Python2.7和3.6下使用官方的测试用例没有问题。但是在Python3.8的环境下就会报上面的错。
主要的两种解决办法:
(1)使用Python2.7或3.6,在此环境下安装gremlinpython
(2)使用Python3.8,在安装完gremlinpython之后,使用pip uninstall tornado卸载tornado5.1,然后用pip install tornado安装最新版本的包。
三、一点思考
今天在报错之后查了很久,最后找阿里云的售后也解决了很久。售后最后给的反馈是python2.7可以运行,是版本不兼容的问题。由于在python2.7中安装gremlinpython的时候有提示tornado的版本,于是就尝试了上面两种解决办法,发现都可以。
其实从报错可以看到,就是一个方法没有实现,但是自己始终不明白为什么报这个错,看报错以及自己查的资料,影影约约觉得应该是tornado的问题。最后在各种巧合下搞明白了到底是哪里的问题,然后解决了。就在想,对于这种NotImplementedError的报错,是不是应该首先考虑包的版本问题,没有实现但是别人又在用,说明很大可能性是版本更新了,一点个人的想法。