in client/migrationx/migrationx-transformer/src/main/python/python2sql/py2sql.py [0:0]
def extract_sql(file):
file_exists = os.path.exists(file)
if not file_exists:
print(f'file {file} not exists')
with open(file, 'r', encoding='utf-8') as f:
node = ast.parse(f.read(), file)
values = []
for item in node.body:
if isinstance(item, ast.If) and isinstance(item.test, ast.Compare):
if (isinstance(item.test.left, ast.Name) and item.test.left.id == '__name__' and
any(isinstance(op, ast.Eq) for op in item.test.ops) and
any(isinstance(comp, ast.Constant) and comp.value == '__main__' for comp in item.test.comparators)):
for main_item in item.body:
if isinstance(main_item, ast.Assign):
for target in main_item.targets:
if isinstance(target, ast.Name):
if in_sql_names(target.id):
if isinstance(main_item.value, ast.JoinedStr):
for v in main_item.value.values:
if isinstance(v, ast.Constant):
replaced = handle_source_replacement(v.value)
values.append(replaced)
elif isinstance(v, ast.FormattedValue):
if isinstance(v.value, ast.Name):
values.append("${" + replace_formatted_name(v.value.id) + "}")
return values