Предлагаю сделать кликабльным mac_type для перехода на страницы add_allow_mac и add_disallow_mac. Поле mac заполнять автоматически в зависимости от строки, на которую кликнули.
Саш, по пункту 1:
Можно же брать напрямую из атрибута функции, без перекладывания в новую переменную.
По пункту 2:
Получается, что db.execute_non_query() - используется до объявления. Потому что экземпляр класса создаётся в ветке if, а туда может и не занести выполнение программы. Но это ладно - работает и ок :)
По пункту 3:
Какое-то странное разделение if получилось.
Может быть нужно как-то так:
definsert_data(data, table, conn='not_created'):
""" Добавляем данные в базу. """columns, values='', ''forkeyindata:
ifcolumns=='':
columns+=keyvalues+=get_value(data[key])
else:
columns=columns+', '+keyvalues=values+', '+get_value(data[key])
query='insert into '+table+'('+columns+') values('+values+')'ifconn=='not_created':
db=DatabaseConnection()
db.open()
db.execute_non_query(query)
db.close()
else:
db.execute_non_query(query)
db.close()
Строки "Show entries" и "Search:" на главной странице отображаются мерзким цветом - найти с помощью Chrome Inspectora или Web Inspector для Safari, где прописан цвет и заменить на православный белый.
Чисто исследовательский интерес.
Посмотреть сколько занимает ресурсов выполнение скрипта.
Сравнить с использованием менее прожорливых структур - например словари заменить на именованные кортежи.?
Никогда, ни при каких условиях, не используйте конкатенацию строк (+) или интерполяцию параметра в строке (%) для передачи переменных в SQL запрос. Такое формирование запроса, при возможности попадания в него пользовательских данных – это ворота для SQL-инъекций!
Правильный способ – использование второго аргумента метода .execute()
Возможны два варианта:
C подстановкой по порядку на места знаков вопросов: cursor.execute("SELECT Name FROM Artist ORDER BY Name LIMIT ?", ('2'))
И с использованием именованных замен: cursor.execute("SELECT Name from Artist ORDER BY Name LIMIT :limit", {"limit": 3})