Datalore中Python运行SQLite数据查询语句报语法错误如何解决
错误诱因
SQL语句存在两处语法违规,直接触发执行报错:
- SELECT查询字段列表缺失分隔逗号:
I.Indicator与G.Value两个待查询字段之间未加逗号,SQL解析逻辑会将空格后的内容识别为前一个字段的别名,而SQL别名不允许包含.字符,这就是报错信息提示near ".": syntax error的直接原因。 - WHERE子句写法不符合SQL语法规范:SQL不支持
AND(条件1,条件2,条件3)这类函数式传参的条件写法,且WHERE关键字后不能直接拼接AND连接符,AND的作用仅为分隔多个平行的过滤条件。
修复方法
按照标准SQL语法修正查询语句即可,修正后的可运行代码如下:
gdpquery= '''SELECT C.Country_Area, G.Year, I.Indicator, G.Value FROM Countries C, GDP G, Indicators I WHERE C.CA_M49_Code = G.CA_M49_Code AND G.Ind_No = I.Ind_No AND G.Ind_Type_No = I.Ind_Type_No''' gdpdata = pd.read_sql_query(gdpquery, conn) gdpdata.head(4)
补充说明:你当前使用的多表逗号分隔写法属于隐式内连接,SQLite完全兼容该语法,修正上述两处错误后即可正常返回查询结果。如果后续需要实现左连接、右连接等复杂关联逻辑,可替换为显式
JOIN写法,适配性更强。
内容的提问来源于stack exchange,提问作者user3087182
相关产品推荐
相关产品推荐

