PyMySQL fetchAll
Метод позволяет извлечь все (оставшиеся) строки результата запроса, возвращая их в виде последовательности последовательностей.
Python
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import pymysql
con = pymysql.connect(‘localhost’, ‘user17’,
‘s$cret’, ‘testdb’)
with con:
cur = con.cursor()
cur.execute(«SELECT * FROM cities»)
rows = cur.fetchall()
for row in rows:
print(«{0} {1} {2}».format(row, row, row))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#!/usr/bin/python3 importpymysql con=pymysql.connect(‘localhost’,’user17′, ‘s$cret’,’testdb’) withcon cur=con.cursor() cur.execute(«SELECT * FROM cities») rows=cur.fetchall() forrow inrows print(«{0} {1} {2}».format(row,row1,row2)) |
В данном примере из таблицы базы данных выводятся все города (cities).
Python
cur.execute(«SELECT * FROM cities»)
1 | cur.execute(«SELECT * FROM cities») |
Python
rows = cur.fetchall()
1 | rows=cur.fetchall() |
Python
for row in rows:
print(«{0} {1} {2}».format(row, row, row))
1 2 |
forrow inrows print(«{0} {1} {2}».format(row,row1,row2)) |
Shell
$ ./retrieve_all.py
1 Bratislava 432000
2 Budapest 1759000
3 Prague 1280000
4 Warsaw 1748000
5 Los Angeles 3971000
6 New York 8550000
7 Edinburgh 464000
8 Berlin 3671000
1 2 3 4 5 6 7 8 9 |
$.retrieve_all.py 1Bratislava432000 2Budapest1759000 3Prague1280000 4Warsaw1748000 5Los Angeles3971000 6NewYork8550000 7Edinburgh464000 8Berlin3671000 |
Запуск PowerShell из агента SQL Server
Есть несколько типов шагов заданий агента SQL Server. Каждый тип связан с некоторой подсистемой, в которой реализуется определенная среда, например агент репликации или среда командной строки. Можно создавать скрипты Windows PowerShell, а затем использовать агент SQL Server, чтобы включить скрипты в задания, которые выполняются в запланированное время или в ответ на события агента SQL Server. Скрипты Windows PowerShell можно запускать либо с помощью шагов задания командной строки, либо с помощью шагов задания PowerShell.
-
Используйте шаги задания PowerShell для запуска подсистемой агента SQL Server служебной программы sqlps, запускающей PowerShell и импортирующей модуль sqlps. Если вы используете SQL Server 2019 или более поздней версии, мы рекомендуем использовать модуль в шаге задания Агента SQL.
-
Используйте шаг задания командной строки для запуска PowerShell.exe и укажите скрипт, импортирующий модуль sqlps .
Предупреждение, касающееся потребления памяти
Каждый шаг задания агента SQL Server, запускающий PowerShell с модулем sqlps, запускает процесс, которому требуется приблизительно 20 МБ памяти. Одновременный запуск большого числа шагов задания Windows PowerShell может иметь негативное влияние на производительность.
Создание шага задания PowerShell
Создание шага задания PowerShell
-
Разверните раздел Агент SQL Server, создайте задание или щелкните правой кнопкой мыши существующее задание и выберите Свойства. Дополнительные сведения о создании заданий см. в разделе Создание заданий.
-
В диалоговом окне Свойства задания выберите страницу Шаги и щелкните Создать.
-
В диалоговом окне Новый шаг задания введите имя шага задания.
-
В раскрывающемся списке Тип выберите PowerShell.
-
В списке Выполнять как выберите учетную запись-посредник с учетными данными, используемыми в задании.
-
В поле Команда введите синтаксис скрипта PowerShell, который будет выполняться в данном шаге. Или щелкните Открыть и выберите файл, содержащий скрипт.
-
Выберите страницу Дополнительно, чтобы задать следующие параметры шага задания: какие действия будут предприняты в случае успешного или неуспешного выполнения шага задания, сколько раз агенту SQL Server пытаться его выполнить и как нужно часто повторять эти попытки.
Метод fetchone()
Метод fetchone() используется для выборки только одной строки из таблицы. Метод fetchone() возвращает следующую строку набора результатов.
Рассмотрим следующий пример.
import mysql.connector #Create the connection object myconn = mysql.connector.connect(host = "localhost", user = "root",passwd = "google",database = "PythonDB") #creating the cursor object cur = myconn.cursor() try: #Reading the Employee data cur.execute("select name, id, salary from Employee") #fetching the first row from the cursor object result = cur.fetchone() #printing the result print(result) except: myconn.rollback() myconn.close()
Выход:
('John', 101, 25000.0)
ИСПОЛЬЗОВАНИЕ КОМАНДЛЕТА GET-WMIOBJECT
Самый простой способ использовать WQL-запрос заключается в заключении его в кавычки (в виде строки), а затем используйте строку запроса в качестве значения параметра запроса командлета Get-WmiObject, как показано в следующем примере.
Можно также сохранить инструкцию WQL в переменной, а затем использовать переменную в качестве значения параметра запроса, как показано в следующей команде.
Можно использовать любой из форматов с любой инструкцией WQL. Следующая команда использует запрос в переменной $queryName, чтобы получить только свойства Name и Version BIOS системы.
Помните, что для получения того же результата можно использовать параметры командлета Get-WmiObject. Например, следующая команда также возвращает значения свойств Name и Version экземпляров класса Win32_Bios WMI.
Создание шага задания командной строки
Создание шага задания CmdExec
-
Разверните раздел Агент SQL Server, создайте задание или щелкните правой кнопкой мыши существующее задание и выберите Свойства. Дополнительные сведения о создании заданий см. в разделе Создание заданий.
-
В диалоговом окне Свойства задания выберите страницу Шаги и щелкните Создать.
-
В диалоговом окне Новый шаг задания введите имя шага задания.
-
В списке Тип выберите Операционная система (CmdExec) .
-
В списке Выполнять как выберите учетную запись-посредник с учетными данными, используемыми в задании. По умолчанию шаги задания CmdExec выполняются под учетной записью службы агента SQL Server.
-
В поле Код завершения процесса успешной команды введите значение от 0 до 999999.
-
В поле Команда введите powershell.exe с параметрами, указывающими скрипт PowerShell для запуска.
-
Выберите страницу Дополнительно, чтобы задать следующие параметры шага задания: какие действия будут предприняты в случае успешного или неуспешного выполнения шага задания, сколько раз агенту SQL Server пытаться его выполнить и в какой файл агент SQL Server может записывать результат выполнения шага задания. Только члены предопределенной роли сервера sysadmin могут записывать выходные данные шага задания в файл операционной системы.
Описание скрипта
1 | Указываем на путь к интерпретатору. |
2 | Задаем системные переменные, чтобы не пришлось в скрипте прописывать полные пути до исполняемых файлов. |
4 — 7 | Задаем переменные. |
4 | Каталог, в котором будем сохранять резервные копии. |
5 | Учетная запись для подключения к базе данных. |
6 | Пароль для подключения к базе данных. |
7 | Дата, когда запускается скрипт. |
9 | Находим все резервные копии, которые старше 30 дней и удаляем их. Оставаляем для архива файлы на 15 число. |
10 | Удаляем все резервные копии старше 180 дней. |
11 | Создаем каталог, в который будем сохранять резервные копии. В качестве имени каталога используем дату запуска скрипта в формате ГГГГ-MM-ДД. |
13 — 25 | Подключаемся к базе данных и вытаскиваем список всех баз данных. Для каждой делаем резервную копию. |
15 — 22 | Пропускаем служебные базы information_schema, mysql, performance_schema, test. |
23 | Делаем резервную копию для баз. |
Приступая к работе
Майкрософт
Name Used (GB) Free (GB) Provider Root ---- --------- --------- -------- ---- Alias Alias C 16.56 63.44 FileSystem C:\ cert Certificate \ D .11 53.92 FileSystem D:\ Env Environment Function Function HKCU Registry HKEY_CURRENT_USER HKLM Registry HKEY_LOCAL_MACHINE Variable Variable WSMan WSMan
Set-Location HKLM: # Или, если вы из людей подосёвее, набирайте cd HKLM:
SKC VC Name Property --- -- ---- -------- 2 0 BCD00000000 {} 4 0 HARDWARE {} 1 0 SAM {} Get-ChildItem : Requested registry access is not allowed. At line:1 char:3 + ls <<<< -force + CategoryInfo : PermissionDenied: (HKEY_LOCAL_MACHINE\SECURITY:St ring) , SecurityException + FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.Power Shell.Commands.GetChildItemCommand 35 0 SOFTWARE {} 8 0 SYSTEM {}
Упорядочение результата
Предложение ORDER BY используется для упорядочивания результата. Рассмотрим следующий пример.
import mysql.connector #Create the connection object myconn = mysql.connector.connect(host = "localhost", user = "root",passwd = "google",database = "PythonDB") #creating the cursor object cur = myconn.cursor() try: #Reading the Employee data cur.execute("select name, id, salary from Employee order by name") #fetching the rows from the cursor object result = cur.fetchall() print("Name id Salary"); for row in result: print("%s %d %d"%(row,row,row)) except: myconn.rollback() myconn.close()
Выход:
Name id Salary David 103 25000 John 101 25000 John 102 25000 Mike 105 28000 Nick 104 90000
Этапы подключения к базе данных MySQL
- Код PHP начинается с и заканчивается Так компьютеру будет понятно, где начало и где конец программы.
- В самом начале кода удобно указать способ отображения ошибок — если что-то пойдет не так, вы сможете быстро понять код ошибки. В языке программирования PHP для этого используются следующие команды:
ᅠ -
Соединение с базой данных MySQL: создаем переменную, например, , в которой через коннектор вносим доступы к нашей базе данных (имя, пароль и т.п.). Эта база данных MySQL должна уже существовать и «крутиться» либо на сервере, либо на локалке. Про установку и создание своей базы данных у нас будет отдельный материал. Подключаемся:
ᅠ - Создаем запрос к базе данных — какие данные мы хотим получить: для этого делаем новую переменную, например, , которой присваиваем значение запроса на языке, понятном для базы MySQL — выбери из где . Запрос выглядит так:
ᅠ - Подготовка в возвращение результатов запроса для чтения: создаем новую переменную, например, — которая получит результат запроса. Используется конструкция . В нашем примере возвращение результатов выглядит так:
ᅠ - Затем вы должны получать по одной записи из набора результатов возвращенного запроса (по сути перебором). В нашем примере — это будет только 1 запись, потому что вы получаете id = 7. Обычно вы будете использовать , чтобы вернуть массив данных, или вы можете использовать , чтобы вернуть объект данных. В нашем примере мы создаем новую переменную, например, и фетчим полученный массив:
ᅠ - Напечатать имя седьмого игрока: для печати в PHP используется оператор echo, где в кавычках можно написать текст для печати, и через точку объединить текст с переменной — так как возвращенный массив имеет несколько «колонок», а нам нужно вывести именно имя, то указываем в скобках к переменной именно :
ᅠ - Отключение от базы данных:
ᅠ
*Если у вас есть несколько записей в вашей таблице и вы хотите их вывести, вы можете использовать цикл для перебора данных следующим образом:
ᅠ
PDO
В строке 7 соединения PDO для режима ошибок установлено «display all exceptions». Если задано другое значение, и запрос не удался бы, мы не получили бы никаких сообщений об ошибках.
Данную настройку следует использовать только при разработке скрипта. При ее активации могут отображаться имена базы данных и таблиц, которые лучше скрыть в целях безопасности. В описанномвыше случае, когда вместо обычных скобок использовались фигурные, сообщение об ошибке выглядит так:
Fatal error: Uncaughtexception 'PDOException' with message 'SQLSTATE: Syntax error or accessviolation: 1064 You have an error in your SQL syntax; <code>check the manualthatcorresponds to your MySQL server version for the rightsyntax to use near '{name, lastname, email} VALUES ('Thom', 'Vial', 'thom.v@some.com')' at line 1"</code>
Другие возможные проблемы:
- Неверно указаны столбцы (несуществующие столбцы или орфографическая ошибка в их именах).
- Один тип значения присваивается столбцу другого типа. Например, если попытаться вставить число 47 в столбец Name, то получим ошибку. В этом столбце необходимо использовать строковое значение. Но если бы мы указали число в кавычках (например, «47») то сработало бы, потому что это строка.
- Попытка ввести данные в таблицу, которая не существует. А также допущенная орфографическая ошибка в имени таблицы.
После успешного ввода данных мы увидим, что они добавлены в базу данных. Ниже приведен пример таблицы, в которую добавили данные.
ИСПОЛЬЗОВАНИЕ ОПЕРАТОРА LIKE
Оператор Like позволяет использовать подстановочные знаки для фильтрации результатов WQL-запроса.
Если оператор Like используется без подстановочных знаков или операторов диапазона, он ведет себя как оператор равенства (=) и возвращает объекты только в том случае, если они точно соответствуют шаблону.
Операцию Range можно объединить с подстановочным знаком процента, чтобы создать простые, но мощные фильтры.
Пример 1:
следующие команды запускают Блокнот а затем выполняют поиск экземпляра класса Win32_Process, имя которого начинается с буквы в диапазоне от «H» до «N» (без учета регистра).
Запрос должен возвращать любой процесс из Hotpad.exe с помощью Notepad.exe.
Пример 2: и%
Следующие команды выбирают все процессы, имена которых начинаются с буквы между A и P (без учета регистра), за которым следует ноль или более букв в любом сочетании.
Командлет Get-WmiObject выполняет запрос, командлет Select-Object получает свойства Name и ProcessID, а командлет Sort-Object сортирует результаты в алфавитном порядке по имени.
Пример 3. не в диапазоне (^)
Следующая команда получает процессы, имена которых не начинаются с одной из следующих букв: A, S, W, P, R, C, U, N
и с последующей длиной не более букв.
Пример 4. любые символы—или None (%)
Следующие команды получают процессы, имена которых начинаются с «Calc».
Символ% в WQL эквивалентен символу звездочки ( * ) в регулярных выражениях.
Пример 5. один символ (_)
Следующие команды получают процессы, имена которых имеют следующий шаблон: «c_lc.exe», где символ подчеркивания представляет любой символ. Этот шаблон соответствует любому имени из calc.exe с помощью czlc.exe или c9lc.exe, но не соответствует именам, в которых символы «c» и «l» разделены более чем одним символом.
Пример 6. точное совпадение
Следующие команды получают процессы с именем WLIDSVC.exe. Несмотря на то, что запрос использует ключевое слово LIKE, он требует точного соответствия, так как значение не содержит подстановочных знаков.
Создание шага задания PowerShell
Создание шага задания PowerShell
-
Разверните раздел Агент SQL Server, создайте задание или щелкните правой кнопкой мыши существующее задание и выберите Свойства. Дополнительные сведения о создании заданий см. в разделе Создание заданий.
-
В диалоговом окне Свойства задания выберите страницу Шаги и щелкните Создать.
-
В диалоговом окне Новый шаг задания введите имя шага задания.
-
В раскрывающемся списке Тип выберите PowerShell.
-
В списке Выполнять как выберите учетную запись-посредник с учетными данными, используемыми в задании.
-
В поле Команда введите синтаксис скрипта PowerShell, который будет выполняться в данном шаге. Или щелкните Открыть и выберите файл, содержащий скрипт.
-
Выберите страницу Дополнительно, чтобы задать следующие параметры шага задания: какие действия будут предприняты в случае успешного или неуспешного выполнения шага задания, сколько раз агенту SQL Server пытаться его выполнить и как нужно часто повторять эти попытки.
Подробное описание
WQL — это язык запросов инструментарий управления Windows (WMI) (wmi), который используется для получения информации от WMI.
Для выполнения запроса WMI в Windows PowerShell не требуется использовать WQL.
Вместо этого можно использовать параметры командлетов Get-WmiObject или Get-CimInstance. Запросы WQL выполняются несколько быстрее, чем стандартные команды Get-WmiObject и улучшенная производительность очевидна, когда команды выполняются на сотнях систем. Однако следует убедиться, что время, затрачиваемое на написание успешного запроса WQL, не перевешивает повышение производительности.
Основные инструкции WQL, для которых необходимо использовать WQL, — SELECT, WHERE и from.
Создание события
CREATE EVENT clearing_hourly ON SCHEDULE EVERY 1 HOUR DO DELETE FROM `database`.`table` WHERE `time` < (NOW () — INTERVAL 7 DAY)
Предполагается, что в БД database у вас таблица table с одним из полей time временного типа (например, timestamp). Описанное событие будет каждый час удалять из таблицы строки с меткой времени старше 7 дней.
Имена вымышлены, но пример с реального сайта. Так на сайте реализована чистка популярных рецептов (которые выводятся на главной и в рубриках). При каждом посещении любого рецепта в базу заносятся строки с уникальным идентификатором IP + N рецепта и пометкой времени. Ежечасно event_scheduler удаляет старые записи (старше недели), в результате на сайте вы видите актуальное популярное содержимое.
Команда SELECT DISTINCT
В отличие от обычного , позволяет выводить только уникальные (не повторяющиеся) данные из таблицы БД.
Синтаксис запроса для вывода уникальных данных из таблицы
SELECT DISTINCT column1, column2, … , columnN FROM table_name;
1 | SELECTDISTINCTcolumn1,column2,…,columnNFROMtable_name; |
В предыдущем примере у нас много раз повторяются данные из колонки author, если мы хотим узнать какие авторы у нас есть без повторов, то воспользуемся следующим запросом.
SELECT DISTINCT author FROM books;
1 | SELECTDISTINCTauthorFROMbooks; |
В результате получим вывод 6 строк с уникальными именами авторов книг вместо 10.
Для подсчета уникальных записей можно воспользоваться функцией .
ИСПОЛЬЗОВАНИЕ ОПЕРАТОРА AND
Чтобы указать несколько связанных условий, используйте ключевое слово и. Ключевое слово и отображается в предложении WHERE. Он возвращает элементы, соответствующие всем условиям.
Оператор and имеет следующий формат:
Например, следующие команды получают процессы с именем «Winword.exe» и ИДЕНТИФИКАТОРом процесса 6512.
Обратите внимание, что команды используют командлет Get-CimInstance. Все операторы, включая операторы LIKE, допустимы с операторами OR и
кроме того, можно сочетать операторы or и и в одном запросе с круглыми скобками, которые указывают Windows PowerShell, какие предложения должны обрабатываться первыми
Все операторы, включая операторы LIKE, допустимы с операторами OR и. кроме того, можно сочетать операторы or и и в одном запросе с круглыми скобками, которые указывают Windows PowerShell, какие предложения должны обрабатываться первыми.
эта команда использует Windows PowerShell символ продолжения (‘), разделите команду на две строки.
Создание шага задания командной строки
Создание шага задания CmdExec
-
Разверните раздел Агент SQL Server, создайте задание или щелкните правой кнопкой мыши существующее задание и выберите Свойства. Дополнительные сведения о создании заданий см. в разделе Создание заданий.
-
В диалоговом окне Свойства задания выберите страницу Шаги и щелкните Создать.
-
В диалоговом окне Новый шаг задания введите имя шага задания.
-
В списке Тип выберите Операционная система (CmdExec) .
-
В списке Выполнять как выберите учетную запись-посредник с учетными данными, используемыми в задании. По умолчанию шаги задания CmdExec выполняются под учетной записью службы агента SQL Server.
-
В поле Код завершения процесса успешной команды введите значение от 0 до 999999.
-
В поле Команда введите powershell.exe с параметрами, указывающими скрипт PowerShell для запуска.
-
Выберите страницу Дополнительно, чтобы задать следующие параметры шага задания: какие действия будут предприняты в случае успешного или неуспешного выполнения шага задания, сколько раз агенту SQL Server пытаться его выполнить и в какой файл агент SQL Server может записывать результат выполнения шага задания. Только члены предопределенной роли сервера sysadmin могут записывать выходные данные шага задания в файл операционной системы.
Запуск PowerShell из агента SQL Server
Есть несколько типов шагов заданий агента SQL Server. Каждый тип связан с некоторой подсистемой, в которой реализуется определенная среда, например агент репликации или среда командной строки. Можно создавать скрипты Windows PowerShell, а затем использовать агент SQL Server, чтобы включить скрипты в задания, которые выполняются в запланированное время или в ответ на события агента SQL Server. Скрипты Windows PowerShell можно запускать либо с помощью шагов задания командной строки, либо с помощью шагов задания PowerShell.
-
Используйте шаги задания PowerShell для запуска подсистемой агента SQL Server служебной программы sqlps, запускающей PowerShell и импортирующей модуль sqlps. Если вы используете SQL Server 2019 или более поздней версии, мы рекомендуем использовать модуль в шаге задания Агента SQL.
-
Используйте шаг задания командной строки для запуска PowerShell.exe и укажите скрипт, импортирующий модуль sqlps .
Предупреждение, касающееся потребления памяти
Каждый шаг задания агента SQL Server, запускающий PowerShell с модулем sqlps, запускает процесс, которому требуется приблизительно 20 МБ памяти. Одновременный запуск большого числа шагов задания Windows PowerShell может иметь негативное влияние на производительность.
Создание шага задания PowerShell
Создание шага задания PowerShell
-
Разверните раздел Агент SQL Server, создайте задание или щелкните правой кнопкой мыши существующее задание и выберите Свойства. Дополнительные сведения о создании заданий см. в разделе Создание заданий.
-
В диалоговом окне Свойства задания выберите страницу Шаги и щелкните Создать.
-
В диалоговом окне Новый шаг задания введите имя шага задания.
-
В раскрывающемся списке Тип выберите PowerShell.
-
В списке Выполнять как выберите учетную запись-посредник с учетными данными, используемыми в задании.
-
В поле Команда введите синтаксис скрипта PowerShell, который будет выполняться в данном шаге. Или щелкните Открыть и выберите файл, содержащий скрипт.
-
Выберите страницу Дополнительно, чтобы задать следующие параметры шага задания: какие действия будут предприняты в случае успешного или неуспешного выполнения шага задания, сколько раз агенту SQL Server пытаться его выполнить и как нужно часто повторять эти попытки.
Подключения к базе данных MySQL — простой пример запроса на PHP
<?phpini_set(‘display_errors’, 1);ini_set(‘display_startup_errors’, 1);error_reporting(E_ALL);
$connect = mysqli_connect(‘localhost’, ‘database’, ‘password’, ‘user’);
$query1 = «SELECT Name FROM igroki WHERE N=’7′»;
$result = $connect->query($query1);
$record = mysqli_fetch_array($result);
echo ‘Name of 7th player: ‘ . $record;
echo «<hr><hr><hr><br>»; //Это разделитель html
// Перебор нескольких значений:
echo «All players:<br><br>»;$query2 = «SELECT Name FROM igroki»;$result2 = $connect->query($query2);while ($record2 = mysqli_fetch_array($result2)) {echo ‘Name: ‘ . $record2 . ‘<br>’;}
$connect -> close();?>
Использование предложения where
Мы можем ограничить результат, полученный оператором select, используя предложение where. Будет извлечены только те столбцы, которые удовлетворяют условию where.
Рассмотрим следующий пример.
Пример: печать имен, начинающихся с j
import mysql.connector #Create the connection object myconn = mysql.connector.connect(host = "localhost", user = "root",passwd = "google",database = "PythonDB") #creating the cursor object cur = myconn.cursor() try: #Reading the Employee data cur.execute("select name, id, salary from Employee where name like 'J%'") #fetching the rows from the cursor object result = cur.fetchall() print("Name id Salary"); for row in result: print("%s %d %d"%(row,row,row)) except: myconn.rollback() myconn.close()
Выход:
Name id Salary John 101 25000 John 102 25000
Пример: печать имен с id = 101, 102 и 103
import mysql.connector #Create the connection object myconn = mysql.connector.connect(host = "localhost", user = "root",passwd = "google",database = "PythonDB") #creating the cursor object cur = myconn.cursor() try: #Reading the Employee data cur.execute("select name, id, salary from Employee where id in(101,102,103)") #fetching the rows from the cursor object result = cur.fetchall() print("Name id Salary"); for row in result: print("%s %d %d"%(row,row,row)) except: myconn.rollback() myconn.close()
Выход:
Name id Salary John 101 25000 John 102 25000 David 103 2500
Пример скрипта
Скрипт будет создавать для каждой базы свой дамп. Это необходимо для быстрого восстановления данных.
Создаем каталог для скриптов и сам скрипт:
mkdir /scripts
vi /scripts/mysql_backup.sh
- #!/bin/bash
- PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
- destination=»/backup/mysql»
- userDB=»backup»
- passwordDB=»backup»
- fdate=`date +%Y-%m-%d`
- find $destination -type d \( -name «*-1» -o -name «*-?» \) -ctime +30 -exec rm -R {} \; 2>&1
- find $destination -type d -name «*-*» -ctime +180 -exec rm -R {} \; 2>&1
- mkdir $destination/$fdate 2>&1
- for dbname in `echo show databases | mysql -u$userDB -p$passwordDB | grep -v Database`; do
- case $dbname in
- information_schema)
- continue ;;
- mysql)
- continue ;;
- performance_schema)
- continue ;;
- test)
- continue ;;
- *) mysqldump —databases —skip-comments -u$userDB -p$passwordDB $dbname | gzip > $destination/$fdate/$dbname.sql.gz ;;
- esac
- done;
Задаем права скрипту на выполнение:
chmod +x /scripts/mysql_backup.sh
Вывод данных из таблицы MySQL с помощью PHP (PDO)
Иногда вывод большого количества данных в терминале может быть неудобен или даже не читаем, в таком случае будет лучше вывести данные таблицы на веб-странице с помощью PHP, используя модуль PDO.
Создадим файл c HTML-таблицей, ячейки которой будут заполнятся данными из таблицы books.
<!DOCTYPE html>
<html>
<head>
<meta charset=»utf-8″>
<title>SELECT</title>
<style>
td:nth-child(5),td:nth-child(6){text-align:center;}
table{border-spacing: 0;border-collapse: collapse;}
td, th{padding: 10px;border: 1px solid black;}
</style>
</head>
<body>
<?php
$db_server = «localhost»;
$db_user = «root»;
$db_password = «MySafePass4!»;
$db_name = «Bookstore»;
try {
// Открываем соединение, указываем адрес сервера, имя бд, имя пользователя и пароль,
// также сообщаем серверу в какой кодировке должны вводится данные в таблицу бд.
$db = new PDO(«mysql:host=$db_server;dbname=$db_name», $db_user, $db_password,array(PDO::MYSQL_ATTR_INIT_COMMAND=>»SET NAMES utf8″));
// Устанавливаем атрибут сообщений об ошибках (выбрасывать исключения)
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Запрос на вывод записей из таблицы
$sql = «SELECT id, title, author, price, discount, amount FROM books»;
// Подготовка запроса
$statement = $db->prepare($sql);
// Выполняем запрос
$statement->execute();
// Получаем массив строк
$result_array = $statement->fetchAll();
echo «<table><tr><th>ID</th><th>Title</th><th>Author</th><th>Price</th><th>Discount</th><th>Amount</th></tr>»;
foreach ($result_array as $result_row) {
echo «<tr>»;
echo «<td>» . $result_row . «</td>»;
echo «<td>» . $result_row . «</td>»;
echo «<td>» . $result_row . «</td>»;
echo «<td>» . $result_row . «</td>»;
echo «<td>» . $result_row . «</td>»;
echo «<td>» . $result_row . «</td>»;
echo «</tr>»;
}
echo «</table>»;
}
catch(PDOException $e) {
echo «Ошибка при создании записи в базе данных: » . $e->getMessage();
}
// Закрываем соединение
$db = null;
?>
</body>
</html>
1 |
<!DOCTYPE html> <html> <head> <meta charset=»UTF-8″> <title>SELECT<title> <style> td:nth-child(5),td:nth-child(6){text-aligncenter;} table{border-spacing;border-collapsecollapse;} td, th{padding10px;border1pxsolidblack;} </style> <head> <body> <?php $db_server=»localhost»; $db_user=»root»; $db_password=»MySafePass4!»; $db_name=»Bookstore»; try{ // Открываем соединение, указываем адрес сервера, имя бд, имя пользователя и пароль, // также сообщаем серверу в какой кодировке должны вводится данные в таблицу бд. $db=newPDO(«mysql:host=$db_server;dbname=$db_name»,$db_user,$db_password,array(PDO::MYSQL_ATTR_INIT_COMMAND=>»SET NAMES utf8″)); // Устанавливаем атрибут сообщений об ошибках (выбрасывать исключения) $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); // Запрос на вывод записей из таблицы $sql=»SELECT id, title, author, price, discount, amount FROM books»; // Подготовка запроса $statement=$db->prepare($sql); // Выполняем запрос $statement->execute(); // Получаем массив строк $result_array=$statement->fetchAll(); echo»<table><tr><th>ID</th><th>Title</th><th>Author</th><th>Price</th><th>Discount</th><th>Amount</th></tr>»; foreach($result_arrayas$result_row){ echo»<tr>»; echo»<td>».$result_row»id».»</td>»; echo»<td>».$result_row»title».»</td>»; echo»<td>».$result_row»author».»</td>»; echo»<td>».$result_row»price».»</td>»; echo»<td>».$result_row»discount».»</td>»; echo»<td>».$result_row»amount».»</td>»; echo»</tr>»; } echo»</table>»; } catch(PDOException$e){ echo»Ошибка при создании записи в базе данных: «.$e->getMessage(); } // Закрываем соединение $db=null; ?> <body> <html> |
Результат заполнения HTML-таблицы данными из таблицы books.
Результат вывода данных из таблицы MySQL при помощи PHP
Вывод данных из нескольких таблиц
Если у вас есть несколько связанных таблиц, то с помощью вы можете выводить их данные составляя из них одну таблицу.
Например мы имеем таблицу с книгами — books и их заказами — orders.
Выведем колонки id, book_id и status для таблицы orders.
Имея идентификаторы записей таблицы books в колонке book_id, мы можем соотнести их с колонкой id в таблице books с помощью команды . В результате мы можем узнать статус заказа для каждой книги.
Выведем колонки title, author, price из таблицы books и колонку status из таблицы orders.
Вывести колонки с одинаковыми именами, например id, в данном случае не получится, т.к. они имеются в обоих таблицах.