- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 
                        def __get_column_names(table: str) -> tuple:
    try:
        with conn:
            cur.execute("SELECT name FROM PRAGMA_TABLE_INFO(?)", (table,))
            column_names = cur.fetchall()
    except Exception as excpt:
        print(excpt)
    column_names = tuple(i[0] for i in column_names)
    return column_names
def db_register_user(user_data: types.User):
    """
    SQL запрос для внесения данных о пользователе
    Args:
        user_data: telebot User объект, содержащий словарь с параметрами пользователя
    """
    user_data = user_data.to_dict()
    column_names: tuple = __get_column_names('Users')
    user_values = tuple(user_data.get(key) for key in column_names if key in user_data)
    try:
        with conn:
            query = 'INSERT INTO Users cn'.replace('cn', str(column_names))+' VALUES (?,?,?,?,0,3)'
            parameters = (*user_values,)
            conn.execute(query, parameters)
    except Exception as excpt:
        print(excpt)
    conn.close()
                                     
        
            На сколько в такой ситуации .format не безопасен? Идея в том, чтобы не объебошится программисту в коде введя неверное значение колонки. Для этого имена колонок берутся из самой базы (есть мысль ещё и типы брать). Есть вариант реализации получше? Спасибо