Spaces:
Runtime error
Runtime error
File size: 1,187 Bytes
e67043b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
import re
import sqlparse
def remove_create_table(sql):
return re.sub(
r"(create|CREATE)\s+(table|TABLE).+?\(.+?\)\s*;", "", sql, flags=re.DOTALL
)
def remove_create_index(sql):
return re.sub(
r"(create|CREATE)\s+(index|INDEX).+?\(.+?\)\s*;", "", sql, flags=re.DOTALL
)
def remove_table(sql):
return re.sub(r"(table|TABLE).+?\(.+?\)\s*;", "", sql, flags=re.DOTALL)
def clean_sql(sql):
tmp = []
for token in sql.flatten():
if (
not token.is_whitespace
and not token.ttype is sqlparse.tokens.Comment.Single
):
tmp.append(token)
return strip_par(" ".join(str(t) for t in tmp))
def strip_par(s):
for op in ["(", ")", ",", ">", "=", "<", ">=", "<=", "!=", "<>", ".", ";"]:
s = s.replace(" {}".format(op), op).replace("{} ".format(op), op)
return s
def preprocess_execute_sql(sql):
sql = remove_create_table(sql)
sql = remove_create_index(sql)
parsed = sqlparse.parse(sql)
if len(parsed) == 0:
return [0, ""]
sql = clean_sql(parsed[0])
if not sql:
return [0, ""]
if sql[-1] != ";":
sql += ";"
return [1, sql]
|