Как подключить MySQL к Python вместе с графическим интерфейсом Tkinter

Позвольте мне начать с краткого введения в MySQL и Tkinter.

MySQL — это реляционная система данныхданныхбазыуправления с открытым исходным кодом. Его можно использовать для хранения данных в виде отношений (или таблиц) в базе данных, которую вы можете создать для личного использования.

Вот ссылка для загрузки MySQL с официального сайта: https://dev.mysql.com/downloads/mysql/

Tkinter — это стандартная и наиболее часто используемая библиотека GUI (графического пользовательского интерфейса) в Python. Он создает более удобный интерфейс по сравнению с обычным окном консоли Python.

С помощью Tkinter вы можете добавлять кнопки, записи, окна сообщений и многое другое.

Tkinter можно установить во время загрузки Python, установив флажок

td/tk и IDLE

как показано на изображении рядом

Теперь это сделано, мы можем начать подключать сервер MySQL к Python. Python нуждается в драйвере MySQL для доступа к базе данных MySQL. Для этого можно использовать MySQL Connector.

Шаг 1. Установка соединителя MySQL

Чтобы установить этот пакет, просто перейдите в командную строку и введите

pip install mysql-connector-python

После успешной установки этого пакета закройте окно cmd.

Шаг 2. Создание подключения

Теперь, после открытия Python IDE, введите следующий код

Нам нужно начать с импортаmysql.connectorпакета, который мы только что скачали.

В методе connect() параметры

  1. host — это «localhost» или 127.0.0.1 (по умолчанию), хост-система, в которой находится сервер MySQL; в данном случае ваш собственный компьютер
  2. user — это имя пользователя для используемой учетной записи MySQL. Имя пользователя по умолчанию — «root».
  3. passwd — это пароль для используемой учетной записи MySQL.

Так что просто введите свое имя пользователя и пароль вашей учетной записи MySQL.

Шаг 3. Создание базы данных

Теперь, когда соединение установлено, мы можем создать базу данных для хранения таблиц. Перед созданием нашей базы данных нам нужно создать курсор.

Объекты курсора взаимодействуют с сервером MySQL внутри, используя объект MySQLConnection. Они используются для выполнения таких операций, как операторы SQL.

Здесь мы создаем объект курсора, используя объект mydb. Этот курсор помогает нам выполнять все запросы SQL в нашем коде.

В следующей строке мы используем курсор c для выполнения запроса на создание нашей базы данных. Вы можете дать любое имя вашей базе данных.

После запуска кода ваша база данных будет создана. Чтобы убедиться, что мы подключаемся к этой конкретной базе данных, мы можем изменить connect()method и добавить новый параметр database с именем вашей базы данных в качестве значения.

Шаг 4. Добавление таблиц в базу данных

Чтобы создать таблицу, мы выполняем код SQL, используя упомянутый ранее метод execute().

Примечание. MySQL для Windows не чувствителен к регистру. Следовательно, команды SQL могут быть написаны в любом регистре по вашему выбору.

Здесь мы создаем таблицу Info с идентификаторами столбцов в качестве первичного ключа, имени и возраста. Ограничение Auto Increment увеличивает значение идентификатора каждый раз, когда в таблицу вставляется новая запись.

Если таблица уже существует в базе данных, можно выполнить команду alter table, если необходимо изменить какой-либо столбец.

После выполнения вышеуказанного кода таблица создается в базе данных. Чтобы убедиться в этом, откройте клиент командной строки MySQL. После ввода пароля введите код

use <yourdatabasename>

После этого вы можете выполнять команды SQL, такие как

desc <yourtablename>

Шаг 5. Создание корневого окна Tk

Теперь, когда таблицы созданы, мы можем приступить к созданию интерфейса с помощью Tkinter. Чтобы получить доступ к tkinter, нам нужно импортировать модуль tkinter в наш код.

Это выход…

root — это просто экземпляр Tkinter для создания вышеуказанного окна. К этому корневому окну мы добавляем такие функции, как geometry (что дает размеры окна по осям x и y) и atitle. Если вам нужен полноэкранный режим, вы можете использовать 1366x768

Функция mainloop() — это бесконечный цикл, работающий до тех пор, пока окно не будет закрыто. Этот метод блокирует выполнение любого кода, следующего за ним, до тех пор, пока не будет закрыто окно, в котором он вызывается. Таким образом, наш код не будет выполнен, если мы не включим эту команду.

Примечание. Однако он может выполняться в IDLE, поскольку сам написан в Tkinter

Шаг 6. Добавление ярлыков и записей

Основная цель — сохранить значения, принятые от пользователя, в нашу базу данных MySQL. Поэтому нам нужно добавить записи и соответствующие им метки в наш код.

Чтобы вставить что-либо в окно Tkinter, нам нужно сделать две вещи. Сначала нам нужно создать объект, а затем поместить его в окно.

Итак, здесь я создал ярлык для отображения. Его параметры:-

  • root(master)который сообщает метке, в каком окне она должна быть создана
  • textтекст, который будет написан в окне
  • font — это шрифт текста, где мы также можем указать его размер и стиль.
  • bgфон для текста (по умолчанию серый)
  • fgцвет переднего плана или цвет текста (по умолчанию черный)

Чтобы вставить эту метку в окно, мы можем использовать 3 функции:

  • place()
  • grid()
  • pack()

Я использовал place(), который принимает координаты x и y (измеряемые в пикселях от верхнего левого угла) метки для размещения в главном корневом окне. Эти координаты могут быть изменены в соответствии с вашими требованиями.

Теперь, чтобы отобразить поле ввода, где пользователь может вводить значения, мы используем функцию Entry(). В этом случае, помимо вышеупомянутых параметров, он также принимает параметр width, который представляет собой длину отображаемой области ввода. Его размер может быть изменен в зависимости от ваших потребностей.

Примечание. Если вы хотите, чтобы метка и запись располагались на одной линии, убедитесь, что они имеют одинаковую координату Y.

Как и в случае с именем, я также создал запись для возраста пользователя. Но при размещении следующей метки убедитесь, что координаты y расположены так, что они не перекрывают друг друга. Я указал расстояние около 100 единиц между двумя координатами y.

Шаг 7. Добавление кнопки

Теперь, когда мы создали записи, позволяющие пользователю вводить значения, мы можем добавить кнопку для сохранения значений при нажатии.

Здесь я включил параметр height, определяющий высоту кнопки по вертикали. Параметрactivebackground определяет цвет кнопки при нажатии.

Параметр command сообщает кнопке функцию, которая будет вызываться при нажатии кнопки. Здесь я вызвал функцию store(), которую я создал, чтобы принять детали и вставить их в таблицу.

Здесь вы можете видеть, что когда кнопка вызывает функцию store()it, она сначала считывает имя и возраст пользователя с помощью метода get(). Функция get() вызывается с использованием тех же переменных, в которых мы ранее сохранили поле ввода (здесь ne и ae). Следовательно, name и age теперь сохраняют значение, введенное пользователем в поле ввода.

Соединение с сервером MySQL должно создаваться только в том случае, если пользователь действительно вводит имя и возраст. Поэтому я добавил условие if-else для проверки этого условия.

Шаг 8. Вставка в таблицу

Но если имя и возраст введены, мы создаем наше соединение с помощью метода connect() и создаем курсор для выполнения SQL-запроса.

Теперь, чтобы вставить данные, все, что нам нужно сделать, это написать простую SQL-команду insert into . Однако для вставки данных, которые хранятся в переменных, нам нужно включить спецификатор формата%s, который очень похож на спецификатор формата, используемый в языке программирования C.

Сама функция очень похожа на printf(), за исключением того факта, что фактические переменные, заменяющие спецификаторы формата, помещаются в круглые скобки после запроса.

Поскольку age является целым числом, а get() хранит данные в виде строки, мы приводим age к целому числу.

Примечание. Нам нужно вставить в таблицу только имя и возраст, так как идентификатор увеличивается автоматически. Поэтому мы модифицируем оператор «Вставить в», чтобы вставлять только столбцы «Имя» и «Возраст».

Теперь, после вставки данных в таблицу, нам нужно зафиксировать этот оператор, так как только тогда в фактическую таблицу вносятся изменения. После чего мы отображаем сообщение о том, что мы успешно вставили данные.

Шаг №9. Добавление окна сообщений

Если имя или возраст не введены, мы можем отобразить окно сообщения, утверждающее, что данные не введены. Для этого нам нужно импортировать tkinter.messagebox

MessageBox в основном выглядит так...

Любой метод Message Box обычно имеет следующие параметры

  1. Первая строка — это заголовок отображаемого окна.
  2. Вторая строка — это фактический текст, отображаемый в сообщении.

Сводный код

Ссылка на GitHub: https://github.com/Surajpedd/Tkinter

После запуска кода

Мы можем подтвердить это, проверив нашу базу данных.

Если вы хотите очистить поля ввода и ввести данные в следующий раз в том же прогоне, а не запускать код снова, вы можете включить следующий код после окна сообщения.

ne.delete(0,END)
ae.delete(0,END)

PS. В этом руководстве я объяснил, как создать и вставить в таблицу. Другие запросы SQL (как DDL, так и DML), такие как удаление, обновление и т. д., также могут выполняться аналогичным образом.

Ссылки:

  1. https://docs.python.org/3/library/tkinter.html
  2. https://dev.mysql.com/doc/connector-python/en