2024-09-27 00:20:22 发布
网友
我看了很多帖子,还是不太明白。下面的代码在代码中嵌入的sql文本中打印出这个查询的外层。在
K.a K.b I J K 1 2
我不清楚当递归调用函数时,如何获取内部层。我在https://github.com/andialbrecht/sqlparse/blob/master/examples/extract_table_names.py之后设计了这个图案,它非常相似,可以工作。提前谢谢。在
在递归调用后的循环中执行的类型检查将测试错误对象的类型:
if is_subselect(item): for x in extract_from_part(item): # next line should check type(x) rather than type(item) if type(item) in(sqlparse.sql.IdentifierList,sqlparse.sql.Identifier): yield x
不过,这种类型检查是不必要的,因为非递归的情况只会产生Identifier或{}项。所以,只需去掉这行代码(并取消对下面的yield)的缩进。在
Identifier
yield
虽然这不是导致此问题的原因,但我也建议使用isinstance,而不是直接比较类型:
isinstance
在递归调用后的循环中执行的类型检查将测试错误对象的类型:
不过,这种类型检查是不必要的,因为非递归的情况只会产生}项。所以,只需去掉这行代码(并取消对下面的
Identifier
或{yield
)的缩进。在虽然这不是导致此问题的原因,但我也建议使用
^{pr2}$isinstance
,而不是直接比较类型:相关问题 更多 >
编程相关推荐