Skip to content

Instantly share code, notes, and snippets.

@masayuki038
Created July 18, 2020 04:01
Show Gist options
  • Select an option

  • Save masayuki038/42a1fbc796059d4e6aa1e2b3cf86edf0 to your computer and use it in GitHub Desktop.

Select an option

Save masayuki038/42a1fbc796059d4e6aa1e2b3cf86edf0 to your computer and use it in GitHub Desktop.
import sqlparse
import sys
import re
parsed = sqlparse.parse(sys.argv[1])
print(parsed[0])
for t in parsed[0].tokens:
print(type(t), t.ttype, t)
if t.ttype is None:
sub_query = str(t)
m = re.match(r"^\((.*)\) [^\s()]+$", sub_query)
if m:
sub_query = m.group(1)
sub_parsed = sqlparse.parse(sub_query)
print(sub_parsed[0])
for sub_t in sub_parsed[0].tokens:
print(type(sub_t), sub_t.ttype, sub_t)
@masayuki038

masayuki038 commented Jul 18, 2020 •

Copy link
Copy Markdown
Author

フィールドとテーブル名の区別はつかない。
ホワイトリストではなくブラックリストを作り、ブラックリストに Identifier が含まれていなければセーフ、とするか。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment