Насколько я знаю, классы Python используют словари для хранения их атрибутов так или иначе (это скрыто от программиста), таким образом, это смотрит на меня, что, что Вы сделали, существует, эффективно эмулируют класс Python... с помощью класса Python.
Вы можете решить эту задачу, создав сценарий, начиная с вывода этого оператора:
SELECT table_name, column_name, data_type
FROM information_schema.columns
WHERE table_schema = 'dbname';
ORDER BY table_name
Подробности об этой функции можно найти здесь " MYSQL :: Таблица INFORMATION_SCHEMA COLUMNS "
Затем вы можете использовать функцию ALTER TABLE .. CHANGE, чтобы изменить имя столбца
, например,
ALTER TABLE mytable CHANGE old_name new_name varchar(5);
См. Также" MYSQL: : ALTER TABLE Syntax "
Разные типы данных имеют разные требования, поэтому вам нужны UNION:
SELECT 'ALTER TABLE '||table_name||' CHANGE '|| column_name||' '||lower(column_name)||' '||datatype||'('||CHAR(character_maximum_length)||');' AS Line
FROM information_schema.columns
WHERE table_schema = dbname and datatype in ( 'CHAR', 'VARCHAR' )
ORDER BY table_name
UNION
SELECT 'ALTER TABLE '||table_name||' CHANGE '|| column_name||' '||lower(column_name)||' '||datatype||'('||CHAR(numeric_precision)||');' AS Line
FROM information_schema.columns
WHERE table_schema = dbname and datatype in ( 'INTEGER' )
ORDER BY table_name
UNION
SELECT 'ALTER TABLE '||table_name||' CHANGE '|| column_name||' '||lower(column_name)||' '||datatype||'('||CHAR(numeric_precision)||','||CHAR(numeric_scale)|');' AS Line
FROM information_schema.columns
WHERE table_schema = dbname and datatype in ( 'FLOAT' )
ORDER BY table_name
UNION
SELECT 'ALTER TABLE '||table_name||' CHANGE '|| column_name||' '||lower(column_name)||' '||datatype||');' AS Line
FROM information_schema.columns
WHERE table_schema = dbname and datatype in ( 'DATE' )
ORDER BY table_name
На случай, если кто-то еще захочет, чтобы ниже был приведен пример завершенного запроса, проверьте, прежде чем использовать .....
ИЗМЕНИТЬ ЗАВЕРШЕННОЕ РЕШЕНИЕ ПО ЗАПРОСУ
SELECT CONCAT(
'ALTER TABLE ', table_name,
' CHANGE ', column_name, ' ',
LOWER(column_name), ' ', column_type, ' ', extra,
CASE WHEN IS_NULLABLE = 'YES' THEN ' NULL' ELSE ' NOT NULL' END, ';') AS line
FROM information_schema.columns
WHERE table_schema = '<DBNAME>'
AND data_type IN ('char', 'varchar','INT', 'TINYINT', 'datetime','text','double','decimal')
ORDER BY line;
HTH кто-то в будущее... Представления BTW также написаны здесь, поэтому вам может потребоваться удалить их из окончательного кода SQL