You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Colab环境下Python调用TigerGraph GSQL出现多行字符串EOF错误如何解决

问题原因

该报错由两个常见原因导致:

  • Python解析三重单引号包裹的多行字符串时,误识别了字符串内部的特殊字符边界,触发EOF(文件结束)异常
  • GSQL语句格式不规范,CREATE QUERY语句结束的}后缺少分号分隔符,导致语句解析失败

解决方法

优先尝试修改字符串声明方式,将三重单引号改为带r前缀的三重双引号(声明为原始字符串,避免Python自动转义特殊字符),同时补全CREATE QUERY语句结尾的分号,修改后的代码如下:

print(conn.gsql(r"""
CREATE QUERY accountActivity() FOR GRAPH AMLSim {
SumAccum<DOUBLE> @s_sumAmt, @r_sumAmt;
SumAccum<DOUBLE> @s_txCnt, @r_txCnt;
MinAccum<DOUBLE> @s_minAmt, @r_minAmt;
MaxAccum<DOUBLE> @s_maxAmt, @r_maxAmt;
AvgAccum @s_avgAmt, @r_avgAmt;
Seed = {Account.*};
acctSend = SELECT tgt FROM Seed:s -(Send_Transaction:e)-> Transaction:tgt
ACCUM s.@s_sumAmt += tgt.amount, s.@s_txCnt += 1, s.@s_minAmt += tgt.amount, s.@s_maxAmt += tgt.amount, s.@s_avgAmt += tgt.amount
POST-ACCUM s.current_balance = s.@s_sumAmt - s.init_balance, s.min_send_tx = s.@s_minAmt, s.max_send_tx = s.@s_maxAmt, s.avg_send_tx = s.@s_avgAmt, s.cnt_send_tx = s.@s_txCnt;
acctRecieve = SELECT tgt FROM Seed:s -(reverse_Recieve_Transaction:e)-> Transaction:tgt
ACCUM s.@r_sumAmt += tgt.amount, s.@r_txCnt += 1, s.@r_minAmt += tgt.amount, s.@r_maxAmt += tgt.amount, s.@r_avgAmt += tgt.amount
POST-ACCUM s.current_balance = s.@r_sumAmt + s.init_balance, s.min_recieve_tx = s.@r_minAmt, s.max_recieve_tx = s.@r_maxAmt, s.avg_recieve_tx = s.@r_avgAmt, s.cnt_recieve_tx = s.@r_txCnt;
PRINT "Features Have Been Calculated";
};
INSTALL QUERY accountActivity
""", options=[]))

如果上述修改仍报错,可将创建查询和安装查询拆分为两次独立调用,避免单次传入的多行内容过长导致解析错误:

# 第一步:创建查询
create_query_sql = r"""
CREATE QUERY accountActivity() FOR GRAPH AMLSim {
SumAccum<DOUBLE> @s_sumAmt, @r_sumAmt;
SumAccum<DOUBLE> @s_txCnt, @r_txCnt;
MinAccum<DOUBLE> @s_minAmt, @r_minAmt;
MaxAccum<DOUBLE> @s_maxAmt, @r_maxAmt;
AvgAccum @s_avgAmt, @r_avgAmt;
Seed = {Account.*};
acctSend = SELECT tgt FROM Seed:s -(Send_Transaction:e)-> Transaction:tgt
ACCUM s.@s_sumAmt += tgt.amount, s.@s_txCnt += 1, s.@s_minAmt += tgt.amount, s.@s_maxAmt += tgt.amount, s.@s_avgAmt += tgt.amount
POST-ACCUM s.current_balance = s.@s_sumAmt - s.init_balance, s.min_send_tx = s.@s_minAmt, s.max_send_tx = s.@s_maxAmt, s.avg_send_tx = s.@s_avgAmt, s.cnt_send_tx = s.@s_txCnt;
acctRecieve = SELECT tgt FROM Seed:s -(reverse_Recieve_Transaction:e)-> Transaction:tgt
ACCUM s.@r_sumAmt += tgt.amount, s.@r_txCnt += 1, s.@r_minAmt += tgt.amount, s.@r_maxAmt += tgt.amount, s.@r_avgAmt += tgt.amount
POST-ACCUM s.current_balance = s.@r_sumAmt + s.init_balance, s.min_recieve_tx = s.@r_minAmt, s.max_recieve_tx = s.@r_maxAmt, s.avg_recieve_tx = s.@r_avgAmt, s.cnt_recieve_tx = s.@r_txCnt;
PRINT "Features Have Been Calculated";
};
"""
print(conn.gsql(create_query_sql, options=[]))

# 第二步:安装查询
install_query_sql = "INSTALL QUERY accountActivity"
print(conn.gsql(install_query_sql, options=[]))

如果运行仍有异常,先确认conn连接的目标图谱确实为AMLSim,且当前账号拥有查询创建、安装权限即可。


内容的提问来源于stack exchange,提问作者user16772647

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:54:04