【发布时间】:2018-06-28 06:14:27
【问题描述】:
我只从这样的查询中提取了列字段
query_split = [query[query.find("select") + len("select"): query.find("from")]]
我得到一个这样的字符串
query_split = [' service,count(*) as count,round(sum(mrp),2) as sale ']
我想得到一个像这样的列表
[' service','count(*) as count','round(sum(mrp),2) as sale']
这是因为我想获取列名列表
['service','count','sale']
我尝试过其他方法,例如
for file in reader(query_split):
print(file)
给我输出
[' service', 'count(*) as count', 'round(sum(mrp)', '2) as sale ']
当我在查询中使用使用 round(sum(mrp),2) 类型操作的测试用例时,以下函数在该点失败
def get_column_name(query):
"""
Extracts the column name from a sql query
:param query: str
:return: column_name
list: Column names which that query will fetch
"""
column_name=[]
query_split = query[query.find("select") + len("select"): query.find("from")]
for i in query_split.split(','):
if "as" in i:
column_name.append(i.split('as')[-1])
else:
column_name.append(i.split(' ')[-1])
return column_name
【问题讨论】:
-
您是否偶然地执行了您想要剖析的查询?如果是这样,并且如果您使用符合 DBAPI 2 的库,则光标的 description attribute 可能会对您有所帮助。
-
否 @shmee ,此查询将用于 api。
-
据我了解,您正在尝试通过文本处理来获取列名?假设您没有关于查询的先验信息?
-
你想走多远?这是一次性工作还是需要自动化的常规工作?
-
@wp78de 它将用于自动化。我已经解决了一点问题,但在这个测试用例中失败了。更新了我的问题,如何获取简单查询的列名,但在查询有一些时失败在查询操作中