q
=
re
.
sub
(
r"/\*[^*]*\*+(?:[^*/][^*]*\*+)*/"
,
""
,
sql_str
)
lines
=
[
line
for
line
in
q
.
splitlines
(
)
if
not
re
.
match
(
"^\s*(--|#)"
,
line
)
]
q
=
" "
.
join
(
[
re
.
split
(
"--|#"
,
line
)
[
0
]
for
line
in
lines
]
)
tokens
=
re
.
split
(
r"[\s)(;]+"
,
q
)
result
=
set
(
)
get_next
=
False
for
token
in
tokens
:
if
get_next
:
if
token
.
lower
(
)
not
in
[
""
,
"select"
]
:
result
.
add
(
token
)
get_next
=
False
get_next
=
token
.
lower
(
)
in
[
"from"
,
"join"
]
return
result
sql2
=
"SELECT a.time_updated_server/1000,content,nick,name FROM "
\
"table1 a JOIN "
\
"table2 b ON a.sender_id = b.user_id JOIN table3 c ON a.channel_id = c.channel_id JOIN table4 d ON c.store_id = d.store_id WHERE sender_id NOT IN(SELECT user_id FROM table5 WHERE store_id IN ('agent_store:1', 'ask:1')) AND to_timestamp(a.time_updated_server/1000)::date >= '2014-05-01' GROUP BY 1,2,3,4 HAVING sum(1) > 500 ORDER BY 1 ASC"
print
(
extract_table_name_from_sql
(
sql2
)
)
本文转自:
https://blog.csdn.net/onwingsofsong/article/details/83546768?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-7.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-7.control