嗯呢,感谢您的建议,这边使用拼接nsql封装了下方法,贴一下哈。
# 创建图空间nsql语句
def create_sql():
create_sql = 'CREATE SPACE IF NOT EXISTS demo' \
'(partition_num = 10, replica_factor = 1, charset = utf8, collate = utf8_bin, vid_type = FIXED_STRING(32)); ' \
'USE demo; ' \
'CREATE TAG IF NOT EXISTS number();' \
'CREATE EDGE `relation` ( `beginTime` datetime NOT NULL) ttl_duration = 0, ttl_col = "";'
return create_sql
# 插入node节点函数
def import_node(datas, client):
values = []
counter = 0
for number in datas[0]:
values.append(f"'{number.rstrip()}' : ()")
counter += 1
if counter == 20:
values_str = ','.join(values)
nsql_node = f'INSERT VERTEX number() VALUES {values_str};'
resp = client.execute(nsql_node)
# 重置计数器和值列表
counter = 0
values = []
# 处理剩余不足 20 个的数据
if counter > 0:
values_str = ','.join(values)
nsql_node = f'INSERT VERTEX number() VALUES {values_str};'
resp = client.execute(nsql_node)
return resp
# 插入edge数据
def import_edge(datas, client):
values = []
counter = 0
# 关系边数据导入图空间
for relation in datas[1]:
relation = relation.rstrip().split('|')
values.append(f"'{relation[0]}'-> '{relation[1]}':(datetime('{relation[2]}'))")
counter += 1
if counter == 20:
values_str = ','.join(values)
nsql_edge = f'INSERT EDGE relation(beginTime) VALUES {values_str};'
print(nsql_edge)
resp = client.execute(nsql_edge)
# 重置计数器和值列表
counter = 0
values = []
# 处理剩余不足 20 个的数据
if counter > 0:
values_str = ','.join(values)
nsql_edge = f'INSERT EDGE relation(beginTime) VALUES {values_str};'
resp = client.execute(nsql_edge)
return resp