我是采用py2neo工具包,在pycharm中拼接Cypher查询语言,使用graph.run(cypher)
往Neo4j Browser中批量创建节点。其中,字符串cypher是我处理好的拼接语句。(和我在java拼接mysql语句一样,属于是老本行、手艺活了)
这个问题99%的博文都没有提到,如果你没有写好的话,导入的就是你项目下DBMS的默认的DB了,这怎么能忍?
前提我们得开启这个项目的DBMS,也就是让自己项目的数据库管理系统保持Active的状态,否则会报错(连接错误)。
graph = Graph('http://localhost:7474/', auth=("neo4j", "12345678"), name='spot')
这一条语句的name就是确定自己数据库的名称。neo4j是默认的用户名,我没改。12345678是密码。
这是转义问题。我们自己在拼接的时候全部用单引号包住属性值,然后把单引号中的属性值用str.replace()
替换成反斜杠加上单引号(转义)即可。因为单引号中可以包含双引号,所以这个就不处理了。\'
代表一个单引号字符,\'
表示在单引号前加上斜杠。
参考Neo4j: numeric property key
Cypher语言不允许数字作为第一个字符,我们需要对属性加上反引号进行转义。
如下代码是我自己写用来解决3、4问题的,自行替换变量即可。spo代表三元组,存放属性和属性值。spo[0]代表一个属性,spo[1]代表一个属性值。spo[0][0].isdigit()
是判断属性的第一个字符是否是数字。
if spo[0][0].isdigit():
properties = properties + '`' + spo[0].replace("\'", "\'") + '`' + ':' + "'" + spo[1].replace("\'", "\'") + "'"
else:
properties = properties + spo[0].replace("\'", "\'") + ':' + "'" + spo[1].replace("\'", "\'") + "'"
下面是在Python中最终拼接成的cypher语句:
CREATE (spot:旅游:公园 {地理位置:'北京市南部',所属城市:'北京市',建议游玩时长:'3-4小时',DESC:'天坛,世界文化遗产,全国重点文物保护单位,国家AAAAA级旅游景区,全国文明风景旅游区示范点。
天坛,在北京市南部,东城区永定门内大街东侧。占地约273万平方米。天坛始建于明永乐十八年(1420年),清乾隆、光绪时曾重修改建。为明、清两代帝王祭祀皇天、祈五谷丰登之场所。天坛是圜丘、祈谷两坛的总称,有坛墙两重,形成内外坛,坛墙南方北圆,象征天圆地方。主要建筑在内坛,圜丘坛在南、祈谷坛在北,二坛同在一条南北轴线上,中间有墙相隔。圜丘坛内主要建筑有圜丘坛、皇穹宇等等,祈谷坛内主要建筑有祈年殿、皇乾殿、祈年门等。',景点级别:'AAAAA级',所属国家:'中国',著名景点:'圜丘',著名景点:'皇穹宇',适宜游玩季节:'春秋两季最佳',门票价格:'15.00元',中文名:'天坛公园',占地面积:'约273万平方米',建造时间:'1420年'})
未经允许不得转载。请给良心博主点点支持吧。谢谢!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)