SELECT, INSERT и DELETE с pymysql
Сегодня разберёмся с классами Python на примере MySQL. Эта база данных достаточно производительная, чтобы обрабатывать большое количество запросов. На ней работают как небольшие сайты, так и корпорации типа Amazon (подробнее с историей этой СУБД можно ознакомиться тут).
Что потребуется:
- Компьютер или ноутбук
- Редактор кода (У меня PyCharm)
- Python версии 3.9 и выше
- Соединение с интернетом
Установка для Windows:
pip install pymysql
Для macOS:
pip3 install pymysql
Установка MySQL
Самый простой способ — задействовать программу OpenServer. Эта программа помогает локально поднимать сервера для сайтов и отображать их в браузере. Мы будем использовать её для быстрого доступа к БД.
1. Скачиваем установочный файл отсюда
2. Запускаем его и следуем всем инструкциям
3. Запускаем OpenServer и ищем внизу флажок:
4. Кликаем на него и выбираем пункт настройки:
5. Ищем в настройках вкладку модули:
6. Если в выпадающем меню «MySQL/MariaDB» выставлено «не использовать», кликаем и выбираем самую последнюю версию СУБД MySQL:
Настройка базы данных MySQL в PhpMyAdmin
Запускаем сервер в OpenServer, наводим на вкладку «дополнительно» и нажимаем на «PhpMyAdmin»:
Дальше вас перекидывает на сайт, где мы вводим логин «root».
Поле «пароль» остается пустым.
В главном меню нам нужен пункт «создать БД». В этом окне придумываем имя базы данных и нажимаем «создать» (тип кодировки не трогаем, оставляем стандартный). После всех манипуляций у нас есть база данных. Остается создать таблицу внутри:
Придумываем имя таблицы и добавляем несколько столбцов.
Нам потребуется 4 столбца, добавляем их и нажимаем «вперед»:
Итак, наша база данных готова. Если вы хотите подробнее углубиться в работу с базой данных на MySQL, посмотрите видео тут.
Создаём класс MySQL на Python
Почему классы удобнее всего использовать для взаимодействия с БД?
У нас будет множество методов для взаимодействия с базой.
Добавление и удаление пользователей, выборка данных, внесение изменений в базу и много чего ещё. Было бы неправильным вызывать каждый раз несколько функций и передавать в них одни и те же параметры и конструкции.
Давайте сформируем класс для базы данных MySQL и добавим для него несколько полезных методов.
import pymysql class MySQL: def __init__(self, host, port, user, password, db_name): self.connection = pymysql.connect( host=host, port=port, user=user, password=password, database=db_name, cursorclass=pymysql.cursors.DictCursor )
С импортами тут все ясно — подключаем нашу библиотеку для работы с MySQL.
Что такое __init__? Эта конструкция будет срабатывать при создании объекта класса. Внутрь нее мы передаём аргументы для создания подключения к базе данных. Также, мы передаём поле connection на хранение внутрь класса, чтобы оно не пропало. Далее мы будем активно использовать connection для обращения к базе.
def add_user(self, name, age, email): insert_query = f"INSERT INTO `user` (name, age, email) VALUES ({name}, {age}, {email})" with self.connection.cursor() as cursor: cursor.execute(insert_query) self.connection.commit()
Метод add_user – тут мы будем создавать новую запись с пользователем, передаем его имя, возраст и почту. Внутри insert_query хранится запрос на языке SQL (обычная строка), в него мы и подставляем добавляемые значения.
Для выполнения запроса используем curcor.execute, а для сохранения — connection.commit.
def del_user(self, id): delete_query = f"DELETE FROM `user` WHERE id = {id}" with self.connection.cursor() as cursor: cursor.execute(delete_query) self.connection.commit()
Метод del_user – тут мы ищем по ID в базе данных человека и удаляем эту строчку.
def update_age_by_id(self, new_age, id): update_query = f"UPDATE `user` SET age = {new_age} WHERE id = {id}" with self.connection.cursor() as cursor: cursor.execute(update_query) self.connection.commit()
В метод update_age_by_id поступают новый возраст человека и его ID, чтобы было можно его найти.
def select_all_data(self): select_all_rows = f"SELECT * FROM `user`" with self.connection.cursor() as cursor: cursor.execute(select_all_rows) rows = cursor.fetchall() return rows
Метод select_all_data делает запрос к базе на получение всех строчек, которые есть в таблице. Результат возвращается в виде объекта, который мы превращаем в список с помощью fetchall.
def __del__(self): self.connection.close()
Метод __del__ срабатывает, когда объект уничтожается. Это нужно, поскольку по документации pymysql нужно закрывать сессию подключения к БД после окончания работы.
Весь класс с методами будет выглядеть так:
import pymysql class MySQL: def __init__(self, host, port, user, password, db_name): self.connection = pymysql.connect( host=host, port=port, user=user, password=password, database=db_name, cursorclass=pymysql.cursors.DictCursor ) def add_user(self, name, age, email): insert_query = f"INSERT INTO `user` (name, age, email) VALUES ('{name}', {age}, '{email}')" with self.connection.cursor() as cursor: cursor.execute(insert_query) self.connection.commit() def del_user(self, id): delete_query = f"DELETE FROM `user` WHERE id = {id}" with self.connection.cursor() as cursor: cursor.execute(delete_query) self.connection.commit() def update_age_by_id(self, new_age, id): update_query = f"UPDATE `user` SET age = {new_age} WHERE id = {id}" with self.connection.cursor() as cursor: cursor.execute(update_query) self.connection.commit() def select_all_data(self): select_all_rows = f"SELECT * FROM `user`" with self.connection.cursor() as cursor: cursor.execute(select_all_rows) rows = cursor.fetchall() return rows def __del__(self): self.connection.close()
Использование класса MySQL
Чтобы начать работу с БД через Python, нам надо передать в объект класса MySQL ряд параметров — IP, порт, логин, пароль и название самой базы данных:
host = '127.0.0.1' port = 3306 user = 'root' password = '' db_name = 'user' bd = MySQL(host=host, port=port, user=user, password=password, db_name=db_name)
После этого мы сможем обращаться к методам объекта bd.
Давайте добавим несколько пользователей:
db.add_user('Анна', 26, '[email protected]') db.add_user('Егор', 19, '[email protected]')
Тем самым мы в таблицу добавили Анну и Егора.
print(db.select_all_data())
Выводим в консоль весь массив данных с помощью метода select_all_data:
[{‘id’: 1, ‘name’: ‘Анна’, ‘age’: 26, ’email’: ‘[email protected]’},
{‘id’: 2, ‘name’: ‘Егор’, ‘age’: 19, ’email’: ‘[email protected]’}]
Как это выглядит в PhpMyAdmin:
Удалим пользователя 1 из таблицы:
db.del_user(1)
Проверяем базу данных:
Попробуем поменять возраст второго пользователя:
db.update_age_by_id(12, 2)
Егору было 19 лет, стало 12:
Заключение
Мы разобрали создание базы данных на СУБД MySQL, создали класс на Python для управления базой и добавили несколько полезных методов. Для усвоения материала рекомендуем повторить наши манипуляции, а также написать парочку собственных методов.
Думаю, вы заметили насколько лёгким становится управление базой если задействовать классы и методы Python. Теперь вы без труда сможете применить их для управления своей базой данных, а может быть и для автоматизации процессов на реальном проекте.
Полезные ссылки
Документация pymysql: https://pymysql.readthedocs.io/en/latest/
Туториалы по MySQL: https://www.mysqltutorial.org/
Документация MySQL: https://dev.mysql.com/doc/refman/8.0/en/tutorial.html
Перенос сайта на wordpress с хостинга на openserver, это простой backup сайта
Главная » WordPress
WordPressРассмотрим способ переноса сайта без использования дополнительных плагинов компонентов резервного копирования.
Таким способом можно делать backup своего сайта с уверенностью, что все файлы корректно сохранятся и сайт заработает на виртуальном сервере openserver.
Сайт cms wordpress состоит из двух составляющих это все файлы сайта и база данных.
Содержание статьи
- 1 Подключаемся к серверу с помощью ftp.
- 2 Перед восстановлением backup сайта на openserver делаем настройки.
- 2.1 Корректируем файлы настроек.
- 2.2 В файле конфигурации wp-config.php редактируем параметры.
- 2.3 Исправляем настройки в базе данных sdelat.sql, которую скачали.
- 2.4 Переносим базу данных сайта в новую.
- 3 Вариант ошибки при переносе сайта.
Содержание
- Подключаемся к серверу с помощью ftp.
- Перед восстановлением backup сайта на openserver делаем настройки.
- Корректируем файлы настроек.
- В файле конфигурации wp-config.php редактируем параметры.
- Исправляем настройки в базе данных sdelat.sql, которую скачали.
- Переносим базу данных сайта в новую.
- Вариант ошибки при переносе сайта.
Подключаемся к серверу с помощью ftp.
- Заходим в панель управления хостингом.Смотрим адрес сервера, логин и пароль для подключения через ftp. Все данные можно уточнить в тех поддержке хостинга. Изначально при регистрации данные отправляются на почтовый ящик.
- Скачиваем программу filezilla. Это ftp клиент, который позволяет скачивать файлы на сервер и с сервера.
После установки программы filezilla настроим подключение. Нажимаем файл менеджер сайтов и кнопку новый сайт.
- В поле хост укажем ip адрес вашего сервера, который мы узнали из первого пункта.
- В типе входа выберем запрашивать пароль, чтобы он не хранился в памяти.
- Пользователя укажем логин для ftp подключения.
- Прописываем пароль.
Нажимаем кнопку соединиться.
И в правой части увидим файлы сервера.
Открываем папку где, хранятся файлы сайта.
Вначале идет имя домена, затем public_html, где лежат все файлы сайта.
Выделяем все файлы и курсором мышки перетаскиваем в папку на нашем компьютере, куда положим сайт в C:OpenServerdomainsbackupsite.
3. Скачаем базу данных сайта. Открываем панель провайдера, где лежит сайт и заходим в пункт управление базами данных MySQL. Выбираем нужную базу данных и входим в phpMyAdmin. Теперь выгрузим все таблицы базы данных, нажимаем кнопку экспорт в верхней части меню. Нажимаем кнопку ВПЕРЕД.
База сохранилась на компьютер, переносим в папку, где лежат файлы сайта.
Таким образом мы сделали backup сайта, который рекомендуется делать периодически.
Перед восстановлением backup сайта на openserver делаем настройки.
Создание чистой базы данных на openserver, для переноса сайта.
Перед созданием базы проверим на хостинге у провайдера в настройке сайта, какая используется версия PHP, такую же версию PHP выберем в настройках openserver.
Зайдем в административную панель phpMyAdmin у виртуального сервера и создадим базу.
Подробно как зайти и создать чистую базу в openserver читать тут.
Базу назовем backupsite и сравнение установим utf-8_general_ci.
Корректируем файлы настроек.
- Меняем пути у файла robots.txt, который выполняет роль инструкции для робота, для сканирования сайта.
- Делаем корректировку файла wp-config.php, для подключения к базе данных. Файл лежит в корне сайта. Открываем wp-config.php с помощью текстового редактора notepad++, программу можно скачать с официального сайта. Используем этот редактор, потому что тут можно выбрать кодировку utf-8 без bom.
В файле конфигурации
wp-config.php редактируем параметры.- Меняем имя базы данных на новое backupsite, которое у чистой базы openserver.
- Имя пользователя базы данных root.
- Пароль от базы пустой.
- Имя сервера localhost.
Исправляем настройки в базе данных sdelat.sql, которую скачали.
Открываем в текстовом редакторе файл.
Нам нужно изменить старое доменное имя на новое.
Нажимаем сочетание клавиш CTRL+F. В поле искать пишем доменное имя, которое было.
Переходим на вкладку заменить и пишем новое backupsite в поле заменить на.
Нажимаем на кнопку заменить все.
Сохраняем изменения.
Все готово для переноса на новый сайт виртуального сервера.
Переносим базу данных сайта в новую.
Открываем чистую базу, которую создали backupsite.
Нажимаем кнопку импорт.
Заходим в обзор, выбираем базу данных, которую скачали и клавишу открыть.
Нажимаем вперед и видим, что импорт успешно завершен, в левой части появятся все таблицы базы.
Переходим на новый домен и проверяем, как отображается сайт.
Вариант ошибки при переносе сайта.
Если где, то допустить ошибку при переносе сайта будет сообщение Error establishing a database connection, означает, что php код не смог получить информацию у базы данных MySQL, для отображения страницы в браузере.
Причин этому могут быть.
- Отключен сервер, где расположена база данных.
- Неверные учетные данные для доступа к базе.
- База повреждена.
Синуос Инк.
| Продукты | Опенсервер6OPENSERVER 6 — ПЛАТФОРМА ПРИЛОЖЕНИЙ
Платформы приложений, встроенные в OpenServer 6
OpenServer 6 объединяет множество готовых приложений платформы с отмеченным наградами корпоративным программным обеспечением UnixWare Ядро SVR5. Каждая прикладная платформа настроена на оптимальную производительность SCO Admin.
Эти прикладные решения можно настроить сразу после платформа приложений OpenServer 6. Конкретная конфигурация соображения для конечных пользователей могут быть лучше всего сделаны путем консультации с одним из тысяч квалифицированных партнеров-реселлеров, расположенных в 82 странах. Чтобы найти Xinuos рядом с вами, нажмите www.sco.com/worldwide.
Платформа решений для серверов баз данных.
Сервер базы данных допускает два или несколько компьютеров, выступающих в роли клиентов, для доступа к общей базе данных, тем самым обеспечивая целостность данных для всех пользователей в среде, где важны низкие затраты на техническое обслуживание. OpenServer 6 предоставляет полное решение с этими компонентами:
- PostgreSQL
- Администратор SCO
- ОпенСервер
Платформа сетевых серверных решений.
Сетевой сервер подключается две или более компьютерные системы вместе. Сетевой сервер обеспечивает общие услуги для всех пользователей, часто объединяя несколько серверов в единая компьютерная система для обеспечения общего доступа к файлам и принтерам (файлы и сервер печати), доступ к общей базе данных (сервер БД), электронная почта (почтовый сервер) и другие службы. OpenServer 6 предоставляет полное решение с этими компонентами:
- DHCP-сервер
- Удаленный вход в систему
- DNS
- Администратор SCO
- Почта
Платформа решений безопасности.
Пользователи компьютеров более внимательны к кражи данных, чем когда-либо прежде. Компьютерные системы должны быть защищены от несанкционированного доступа, кражи и повреждения данных. OpenServer 6 обеспечивает шифрование данных и доступ к данным только несколько уровней авторизации доступа. OpenServer 6 обеспечивает комплексное решение с этими компонентами:
- SSL
- VPN
- Зашифрованные файловые системы
- СЛП
- Брандмауэр/NAT
- СШ
- Администратор SCO
Платформа веб-серверных решений.
Веб-сервер — это компьютер, обслуживает или доставляет веб-страницы клиенту. Клиенты, желающие разместить их собственные веб-сайты будут нуждаться в платформе решения веб-сервера. OpenServer 6 — идеальный кандидат для всех ваших веб-хостингов. потребности. OpenServer 6 предоставляет комплексное решение с эти компоненты:
- PHP
- Кальмар
- JBoss
- Питон
- Апач
- Веб-службы
- Перл
- Томкэт
- Администратор SCO
Платформа решений для файловых серверов и серверов печати.
Файловый сервер и сервер печати обеспечивает общий доступ к файлам для двух или более компьютерных систем. При поиске файлового и принт-сервера учитывайте стабильность, безопасность и надежность OpenServer 6. OpenServer 6 обеспечивает полное решение с этими компонентами:
- САМБА
- ЧАШКИ
- Администратор SCO
Платформа решений для разработчиков.
Пользователи компьютеров, разрабатывающие их собственные приложения оценят стабильность, надежность и производительность OpenServer 6. Наличие стандартных инструменты для разработки открытых, кроссплатформенных приложений являются отличительной чертой UNIX-решений Xinuos. OpenServer 6 предоставляет комплексное решение с этими компонентами:
- Ява
- С/С++
- Обнаружение утечки памяти
- Графический отладчик
- Администратор SCO
Платформа решений для настольных ПК.
Некоторые пользователи бизнес-компьютеров предпочитают скорость и эффективность интерфейса командной строки, традиционный административный интерфейс для UNIX. Но все больше и больше администраторы предпочитают оконный графический интерфейс. OpenServer 6 позволяет вам решить, что лучше всего подходит для вашего бизнеса среду, включая все необходимые компоненты платформу настольных решений в OpenServer.
- КДЕ
- Аудио
- Мозилла
- Администратор SCO
СТОРОННИЕ ПРИКЛАДНЫЕ ПЛАТФОРМЫ
Многие сторонние партнеры по приложениям также предоставляют решения платформы с OpenServer, включая следующие.
Платформа решений для баз данных
- CA Энгр
- Прогресс OpenEdge
- MySQL
- Единый сервер данных
- Унифицировать Accell/SQL
- Сервер данных Unify ELS
Платформа решений для разработчиков
- Сервер Microfocus Express
- АКУКОРП
- Базис Международный Базис BBX
- Базовая модель ThoroughBred
- Тридия ДВ Про
Платформа решений для резервного копирования и безопасности
- Решения для резервного копирования и безопасности
- Магистральная сеть Netvault
- Кактус Одинокая смола
- Microlite BackupEdge
- Технология Willow WebSphereMQ
Платформа финансовых решений
- Финансовые услуги CCS
- Аккукобол
- Микрофокус Кобол
- Учет открытых систем
Сервер веб-приложений и данных (сервер шлюза) Платформа решений
- Веб-соединение Эриком Повертерм
Платформа решений эмуляции терминала
- FaceTerm
Мы приглашаем вас связаться с этими поставщиками для получения информации о создании платформы приложений с OpenServer 6. Для получения дополнительной информации о дополнительных платформах приложений, напишите Xinuos по адресу [email protected].
Удаленный открытый сервер SQL
Удаленный открытый сервер SQL Руководство пользователя SQL Remote
Справочник по утилитам и параметрам
SQL Remote Open Server
Назначение
Чтобы взять данные репликации с сервера репликации и применить их к стабильной очереди SQL Remote. Эта утилита необходима только для баз данных, участвующих как в репликации сервера репликации (и использующей агент репликации), так и в удаленной репликации SQL.
Синтаксис
ssqueue [ параметры ] [ имя-открытого-сервера ]
Опции
Вариант | Описание |
---|---|
имя-открытого-сервера | Открытое имя сервера, которое должно быть объявлено в файле интерфейсов. |
-c «ключевое слово=значение ; … » | Укажите параметры подключения к базе данных |
-cq «ключевое слово=значение ; … » | Укажите параметры подключения к базе данных для стабильной очереди |
-дл | Отображать сообщения в окне |
-к | Закрыть окно по завершении |
-o файл | Вывод сообщений в файл |
-ос файл | Максимальный размер файла для протоколирования выходных сообщений |
-от файл | Усекать файл и логировать выходные сообщения |
-к | Запустить с свернутым окном |
-уд | Запуск в качестве демона [UNIX] |
-в | Подробная операция |
Описание
SQL Remote Open Server используется для того, чтобы база данных Adaptive Server Enterprise могла участвовать как в репликации SQL Remote, так и в качестве основного сайта в установке Replication Server (или сайта репликации с использованием асинхронных вызовов процедур).
Имя исполняемого файла выглядит следующим образом:
Сведения об опции
open-server-name Сервер репликации должен подключаться к удаленному открытому серверу SQL, поэтому имя этого сервера должно быть открытым. Это имя открытого сервера задается в командной строке и должно соответствовать основной записи и записи запроса в файле интерфейсов на компьютере, на котором работает SQL Remote Open Server, а также записи запроса в файле интерфейсов на компьютере, на котором работает сервер репликации.
Файл интерфейсов называется sql.ini в операционных системах Windows и interfaces в UNIX.
Значение по умолчанию для имени открытого сервера — SSQueue .
-c Указать параметры подключения к базе данных, содержащей реплицируемые данные. Это подключение необходимо для того, чтобы SQL Remote Open Server мог получить доступ к системным таблицам SQL Remote.
Параметры подключения должны быть из следующего списка:
Параметр | Описание |
---|---|
UID | Логин ID |
PWD | Пароль |
ДБН | (необязательно) Имя базы данных. Если этот параметр не указан, соединение по умолчанию использует базу данных по умолчанию для идентификатора входа. |
АНГЛ | Имя сервера. |
-cq Указать параметры подключения для стабильной очереди. Если не указано, по умолчанию используются значения -c
.
-dl Отображать сообщения в окне или в командной строке, а также в файле журнала.
-k Закрыть окно по завершении.
-o Добавить выходные данные в файл журнала. По умолчанию вывод отправляется на экран.
-os Указывает максимальный размер файла для протоколирования выходных сообщений. Допустимый размер может быть указан как n (байт), n K (КБ) или n M (МБ). По умолчанию ограничений нет, а минимальный предел составляет 10000 байт.
Прежде чем SQL Remote записывает выходные сообщения в файл, он проверяет текущий размер файла. Если в сообщении журнала размер файла превысит указанный размер, SQL Remote переименует выходной файл в 9.0239 yymmddxx.dbr (для dbremote) и yymmddxx.ss r (для ssremote), где xx — последовательные символы от AA до ZZ, а yymmdd — текущий год, месяц и дата.
Если Message Agent работает в непрерывном режиме в течение длительного времени, этот параметр позволяет вручную удалить старые файлы журнала и освободить место на диске.
-ot Сократите файл журнала и добавьте к нему выходные сообщения. По умолчанию вывод отправляется на экран.
-q Только для операционных систем Windows: запускает Message Agent со свернутым окном.