Загрузка данных


import random
import string
from datetime import datetime, date
from sqlalchemy import Integer, String, DateTime, Boolean, Float, Date, Text, Enum
from sqlalchemy.orm import DeclarativeBase

def gen_int(): return random.randint(1, 1000)
def gen_str(col): return "".join(random.choices(string.ascii_letters, k=col.type.length or 8))
def gen_bool(): return random.choice([True, False])
def gen_datetime(): return datetime.now()
def gen_date(): return date.today()
def gen_float(): return float(random.randint(1, 1000))
def gen_enum(col): return random.choice(col.type.enums)

TYPE_MAPPING = {
    Integer: lambda col: gen_int(),
    String: lambda col: gen_str(col),
    Text: lambda col: gen_str(col),
    Boolean: lambda col: gen_bool(),
    DateTime: lambda col: gen_datetime(),
    Date: lambda col: gen_date(),
    Float: lambda col: gen_float(),
    Enum: lambda col: gen_enum(col),
}

def gen(model_cls: DeclarativeBase, num_rows=5):
    data = []

    for _ in range(num_rows):
        row = {}
        for column in model_cls.__table__.columns:
            gen_func = TYPE_MAPPING.get(type(column.type))
            row[column.name] = gen_func(column) if gen_func else None
        data.append(row)
    return data

from models import AllTypesModel

mock_data = gen(AllTypesModel, 100)
for row in mock_data:
    print(row)
-----------------
def find_table_in_wrappers(tree: ast.Module, target_wrappers: list[str]):
    res = []

    for node in ast.walk(tree):
        if isinstance(node, ast.Call) and node.func.id in target_wrappers:
            res.append(node.args[0].value)
    
    return res

# =====================================================================
# 3. ЗАПУСК ТЕСТА
# =====================================================================
if __name__ == "__main__":
    # Список функций-оберток, которые мы ищем
    TARGET_WRAPPERS = ["db_wrapper_select", "db_wrapper_insert"]

    # Парсим моковый код в AST-дерево
    tree = ast.parse(mock_code)
    result = find_table_in_wrappers(tree, TARGET_WRAPPERS)
    print(result)