A simple SELECT statement #
There are several methods to execute the query. The most common being the method.
Its syntax is as follows:
`execute(query, params=None)`
Parameter | Description |
---|---|
(required) SQL query or command to execute | |
(optional) Sequence or mapping used to provide values for the query parameters. |
Let’s look at some examples now:
The following listing select first five rows from the city table.
Example 1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import mysql.connector from mysql.connector.cursor import MySQLCursor db = mysql.connector.connect(option_files='my.conf', use_pure=True) cursor = db.cursor() cursor.execute("select * from city limit 5") # iterate over result for row in cursor print(row) cursor.close() db.close() |
Expected Output:
1 2 3 4 5 |
(1, 'Kabul', 'AFG', 'Kabol', 1780000) (2, 'Qandahar', 'AFG', 'Qandahar', 237500) (3, 'Herat', 'AFG', 'Herat', 186800) (4, 'Mazar-e-Sharif', 'AFG', 'Balkh', 127800) (5, 'Amsterdam', 'NLD', 'Noord-Holland', 731200) |
After executing the query we use cursor object to iterate over the results. Notice that each row is returned in the form of tuple. To access the data in the individual column use the index. Also notice that the data in column is converted to its equivalent Python type.
Here is another example which access the data in the individual column and prints it’s type.
Example 2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import mysql.connector from mysql.connector.cursor import MySQLCursor db = mysql.connector.connect(option_files='my.conf', use_pure=True) cursor = db.cursor() cursor.execute("select * from city limit 5") for row in cursor print(row], type(row]), row1], type(row1]) ) cursor.close() db.close() |
Expected Output:
1 2 3 4 5 |
1 <class 'int'> Kabul <class 'str'> 2 <class 'int'> Qandahar <class 'str'> 3 <class 'int'> Herat <class 'str'> 4 <class 'int'> Mazar-e-Sharif <class 'str'> 5 <class 'int'> Amsterdam <class 'str'> |
Remember to read the rows before consuming the res
Операции с базой данных Python MySQL
В этом разделе мы сосредоточимся на различных операциях( CRUD ), которые мы можем выполнять с базой данных MySQL.
1. Python MySQL – Создать таблицу
После подключения к базе данных, которую мы хотим использовать, и создания объекта cursor мы можем легко выполнять запросы с помощью метода и CREATE таблицы.
import pymysql #server connection mydb = pymysql.connect( host="localhost", user="root", database="classdb", #database passwd="" ) mycursor = mydb.cursor() #cursor created #work with the cursor query = "CREATE TABLE Students(StudentID int PRIMARY KEY AUTO_INCREMENT, Name CHAR(20), Lastname CHAR(20),Standard int);" mycursor.execute(query) #closing the cursor mycursor.close()
Как мы видим, создается таблица со столбцами StudentID , Name , Last name и Standard .
2. Вставка Python MySQL
Теперь, когда мы уже создали таблицу, мы можем вставить строки в нее, еще раз выполнив запрос с использованием объекта курсора.
import pymysql #server connection mydb = pymysql.connect( host="localhost", user="root", database="classdb", #database passwd="" ) mycursor = mydb.cursor() #cursor created #work with the cursor query1 = "INSERT INTO students(Name, Lastname, Standard) VALUES('Anik', 'Das', 6);" query2 = "INSERT INTO students(Name, Lastname, Standard) VALUES('Subhash', 'Neel', 8);" query3 = "INSERT INTO students(Name, Lastname, Standard) VALUES('Prateek', 'Neel', 8);" query4 = "INSERT INTO students(Name, Lastname, Standard) VALUES('Prem', 'Dutta', 9);" mycursor.execute(query1) mycursor.execute(query2) mycursor.execute(query3) mycursor.execute(query4) #closing the db mydb.commit() mydb.close()
Строки были успешно вставлены в базу данных.
3. Python Выберите MySQL
Как мы уже упоминали ранее, метод извлекает все строки результирующего набора запроса и возвращает список кортежей с использованием объекта курсора.
Следовательно, применяя запрос для выбора некоторых уникальных или желаемых данных из базы данных, мы можем показать их с помощью метода курсора и .
import pymysql #server connection mydb = pymysql.connect( host="localhost", user="root", database="classdb", #database passwd="" ) mycursor = mydb.cursor() #cursor #work with the cursor res = "Select * from students;" #executing the query mycursor.execute(res) rows = mycursor.fetchall() #showing the rows for row in rows: print(row) #closing the db mydb.commit() mydb.close()
Выход:
(1, 'Anik', 'Das', 6) (2, 'Subhash', 'Neel', 8) (3, 'Prateek', 'Neel', 8) (4, 'Prem', 'Dutta', 9)
4. Обновление Python MySQL
Кроме того, если мы хотим обновить какой-либо набор данных, мы можем использовать запрос UPDATE , как показано ниже. Здесь мы пытаемся обновить для студента с Студенческим удостоверением = 2 (т. е. Субхаш).
import pymysql #server connection mydb = pymysql.connect( host="localhost", user="root", database="classdb", #database passwd="" ) mycursor = mydb.cursor() #cursor #query to update database data update_query = "UPDATE students set Lastname = 'Seth' WHERE StudentID = 2" #executing the query mycursor.execute(update_query) #showing the rows res = "Select * from students;" mycursor.execute(res) rows = mycursor.fetchall() for row in rows: print(row) #closing the db mydb.commit() mydb.close()
Выход:
Видно, что обновление прошло успешно.
5. Удаление Python MySQL
Давайте теперь попробуем удалить набор данных с помощью запроса курсора. Здесь мы пытаемся удалить запись или записи, которые имеют . Который в данном случае является только одним(Студенческий билет 4 со стандартом 9).
import pymysql #server connection mydb = pymysql.connect( host="localhost", user="root", database="classdb", #database passwd="" ) mycursor = mydb.cursor() #cursor #query to delete database data delete_query = "DELETE FROM students WHERE Standard > 8" #executing the query mycursor.execute(delete_query) #showing the rows res = "Select * from students;" mycursor.execute(res) rows = mycursor.fetchall() for row in rows: print(row) #closing the db mydb.commit() mydb.close()
Выход:
(1, 'Anik', 'Das', 6) (2, 'Subhash', 'Seth', 8) (3, 'Prateek', 'Neel', 8)
Ясно, что удаление было выполнено успешно.
6. Python Отбрасывает таблицу в MySQL
Мы также можем удалить или удалить таблицу с помощью DROP query в MySQL. Это может быть использовано для удаления таблицы, чтобы мы могли повторно использовать имя или избежать столкновения имен таблиц.
#query to drop table drop_query = "DROP TABLE IF EXISTS students;" #executing the query mycursor.execute(drop_query)
Приведенный выше фрагмент кода удаляет нашу ранее созданную таблицу, .
5 последних уроков рубрики «Разное»
-
Выбрать хороший хостинг для своего сайта достаточно сложная задача. Особенно сейчас, когда на рынке услуг хостинга действует несколько сотен игроков с очень привлекательными предложениями. Хорошим вариантом является лидер рейтинга Хостинг Ниндзя — Макхост.
-
Как разместить свой сайт на хостинге? Правильно выбранный хороший хостинг — это будущее Ваших сайтов
Проект готов, Все проверено на локальном сервере OpenServer и можно переносить сайт на хостинг. Вот только какую компанию выбрать? Предлагаю рассмотреть хостинг fornex.com. Отличное место для твоего проекта с перспективами бурного роста.
-
Создание вебсайта — процесс трудоёмкий, требующий слаженного взаимодействия между заказчиком и исполнителем, а также между всеми членами коллектива, вовлечёнными в проект. И в этом очень хорошее подспорье окажет онлайн платформа Wrike.
-
Подборка из нескольких десятков ресурсов для создания мокапов и прототипов.
MySQLi Connection using mysql binary
You can establish MySQLi database using mysql binary at command prompt.
Example
Here is a simple example to connect to MySQL server to establish mysqli database from command prompt −
# mysql -u root -p Enter password:******
This will give you mysql> command prompt where you will be able to execute any SQL command. Following is the result of above command −
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2854760 to server version: 5.0.9 Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
In above example, we have used root as a user but you can use any other user. Any user will be able to perform all the SQL operations, which are allowed to that user.
You can disconnect from MySQL database any time using exit command at mysql> prompt.
mysql> exit Bye
Отличие MySQLi от MySQL
MySQLi пришло на смену MySQL. Буква «i» обозначает улучшенный (Improved). Имеет частичную совместимость со старой версией. Поддерживается всеми версиями PHP. Имеет чуть большую скорость работы и лучшую безопасность. Установлено на 99% хостинговых площадках.
Одной из важных особенностей является наличие объектно-ориентированного интерфейса. Если раньше работы с базой данных осуществлялись при помощи интерфейса функций, то теперь можно использовать оба подхода. Рассмотрим пример подключения к базе данных через MySQLi средствами «ООП».
// Пытаемся соединиться $mysqli = new mysqli($db_server, $db_user, $db_password, $db_name); // Проверяем, удалось ли соединение if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } // Устанавливаем кодировку подключения $mysqli->set_charset('utf8'); // Формируем запрос $sql = 'SELECT * FROM `books` WHERE `BAuthor`="Пушкин"'; $result = $mysqli->query($sql); // Перебор результата while($row = $result->fetch_object()) { print $row->BName .'<br>'; } // Освобождаем память $result->free(); // Закрываем соединение $mysqli->close();
Так осуществляется простая выборка названий книг из поля «BName» таблицы «books». Вставка и обновление существующих записей так же не отличается сложностью.
$sql = 'UPDATE `books` SET `BPrice` = "99" WHERE `BId`=1'; $result = $mysqli->query($sql); print ($result)?'Success!':'Error : ('. $mysqli->errno .') '. $mysqli->error;
В конце запроса осуществляем проверку, удалось ли обновить запись.
4: Установка Apache 2
Теперь нужно установить Apache 2 и убедиться, что веб-сервер распознаёт файлы Python как исполняемые.
Установите Apache с помощью apt-get:
Как и MySQL, сервер Apache запустится разу после установки.
Примечание: После установки веб-сервера появляются открытые порты.
Теперь нужно поместить root-каталог сайта в надёжную точку системы. Стандартный каталог находится в /var/www/html. Следуя конвенции, создайте тестовый подкаталог по имени test в этом каталоге.
В завершение нужно настроить взаимодействие Python и Apache. Отключите многопоточные процессы.
После этого предоставьте Apache расширенные права на запуск скриптов.
Затем измените настройки Apache, чтобы явно объявить файлы Python как исполняемые и разрешить запускать их. Откройте конфигурационный файл с помощью nano или любого другого текстового редактора.
После строки <VirtualHost *:80\> добавьте следующий код:
Убедитесь, что блок <Directory> помещён в блок <VirtualHost>.
Этот блок Directory позволяет настроить поведение Apache для этого каталога. Он сообщает Apache, что каталог /var/www/test содержит исполняемые файлы, задаёт index.py в качестве стандартного файла и затем определяет исполняемые файлы.
Также нужно разрешить исполняемые файлы в каталоге сайта. Для этого измените путь для DocumentRoot. Найдите строку, которая начинается с DocumentRoot /var/www/html, и измените её:
Теперь файл имеет такой вид:
Сохраните и закройте файл. Чтобы изменения вступили в силу, перезапустите Apache.
Примечание: Apache 2 может вывести предупреждение о FQDN сервера. Его можно проигнорировать, так как директива ServerName еще не настроена.
Если в конце вывода находится строка , Apache успешно перезапущен.
Как создать базу данных?
Хотя мы упоминали, что внешний сервер не работает, и все находится внутри текущего компьютера, поскольку это стандартный протокол для систем баз данных.
Мы создадим соединение с базой данных Python SQLite. Это выделяет память для базы данных и извлекает любые данные из файла базы данных, так что база данных создается из файла .
import sqlite3 # Establish a connection to the Database and create # a connection object conn = sqlite3.connect('database.db')
Здесь — это файл базы данных, в котором будут храниться данные. Итак, мы вызываем базу данных из этого файла.
Если у нас уже есть файл, мы должны убедиться, что случайно не перезаписали его. Итак, мы должны проверить, существует ли уже файл в системе, используя приведенную ниже функцию.
import os def check_db(filename): return os.path.exists(filename)
Однако есть еще один вариант — напрямую создать базу данных в ОЗУ, если вам просто нужна временная база данных, с помощью специального файла
import sqlite3 conn = sqlite3.connect(':memory:')
Проблема с вышеуказанным методом заключается в том, что нам нужно явно закрыть соединение в конце, используя . У Python есть очень хорошее решение для этого — менеджеры контекста. Менеджер контекста оператора автоматически сделает это за вас, поэтому теперь наш модифицированный код будет:
import sqlite3 db_file = 'database.db' with sqlite3.connect(db_file) as conn: print('Created the connection!') print('Automatically closed the connection!')
Выход
Created the connection! Automatically closed the connection!
Создание нового пользователя
В части 1 руководства по работе с MySQL мы воспользовались всеми возможностями для редактирования в MySQL с помощью пользователя с правами root, обладающего полным доступом ко всем базам данных. Однако для тех случаев, когда нам могут потребоваться дополнительные ограничения, существует возможность создания пользователей с настраиваемыми правами.
Давайте начнем с создания нового пользователя внутри оболочки MySQL:
Примечание: при добавлении пользователей в оболочке MySQL в данном руководстве мы будем в качестве хоста пользователя использовать , а не IP-адрес сервера. — это имя хоста, которое означает «этот компьютер», и MySQL работает с этим именем хоста особенным образом: когда пользователь на данном хосте выполняет вход в MySQL, СУБД будет пытаться подключиться к локальному серверу, используя файл сокета Unix. Таким образом, обычно используется, если вы планируете подключение к вашему серверу через SSH или если вы запускаете локальный клиент для подключения к локальному серверу MySQL.
В данный момент newuser не имеет прав на выполнение каких-либо действий с базами данных. Фактически, даже если newuser попытается выполнить вход (с помощью пароля password), он не сможет получить доступ к оболочке MySQL.
Таким образом, первое, что необходимо сделать, — это предоставить пользователю доступ к необходимой ему информации.
Звездочки в этой команде обозначают базу данных и таблицу (соответственно), к которым пользователь может получить доступ. Эта конкретная команда позволяет пользователю читать, редактировать, запускать и выполнять любые задачи для всех баз данных и таблиц.
Обратите внимание, что в этом примере мы предоставляем newuser полный корневой доступ ко всему содержанию нашей базы данных. Хотя это может быть полезно для объяснения некоторых концепций MySQL, в большинстве случаев это может быть нецелесообразно и может отрицательно сказаться на безопасности вашей базы данных
После того как вы определились с правами, которые вы хотите предоставить вашему новому пользователю, необходимо будет во всех случаях перезагрузить все привилегии.
После этого внесенные вами изменения вступят в силу.
Creating Cursor Object #
The cursor object allows us to execute queries and retrieve rows. The cursor object is an instance of class.
We can create the cursor object by either by using the method of the connection object (i.e ) or call the class directly.
Just like the connection object, when you are finished working with the cursor you have to close it by calling the method.
Here is an example which illustrates two way different ways of creating cursors.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import mysql.connector from mysql.connector.cursor import MySQLCursor db = mysql.connector.connect(option_files='my.conf', use_pure=True) cursor1 = db.cursor() # 1st method cursor2 = MySQLCursor(db) # 2nd method print(db) print("cursor1: ", cursor1) print("cursor2: ", cursor2) cursor1.close() cursor2.close() db.close() |
Expected Output:
1 2 3 |
<mysql.connector.connection.MySQLConnection object at 0x7fcf99799da0> cursor1: MySQLCursor: (Nothing executed yet) cursor2: MySQLCursor: (Nothing executed yet) |
We are now ready to execute queries to the database.
MySQL install
If you do not already have MySQL installed, we must install it.
$ sudo apt-get install mysql-server
This command installs the MySQL server and various other packages.
While installing the package, we are prompted to enter
a password for the MySQL root account.
Next, we are going to create a new database user and a new database.
We use the client.
$ mysql -u root -p Enter password: mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)
We connect to the database using the root account. We show all available
databases with the statement.
mysql> CREATE DATABASE testdb; Query OK, 1 row affected (0.02 sec)
We create a new database. We will use this database
throughout the tutorial.
mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye
We create a new database user. We grant all privileges to this user
for all tables of the database.
Установка MySQL
Последнее обновление: 19.12.2017
MySQL не является неотъемлемым компонентом для создания сайтов на PHP. Мы можем использовать различные системы баз данных, однако на сегодняшний день
MySQL является наиболее популярной системой управления базами данных для работы с PHP, кроме того, она бесплатная.
Например, у меня 64-х битная версия Windows, поэтому я выбрал пакет Windows (x86, 64-bit), MySQL Installer MSI. После выбора версии загрузим установочный пакет.
На странице для ОС Windows два вида инсталлятора, можно выбрать любой.
После загрузки запустим инсталлятор.
Если в системе уже установлена какая-либо версия MySQL, то вместо установки будет предложено обновление отдельных компонентов.
После принятия лицензионного соглашения будет предложено выбрать тип установки. Выберем тип Developer Default:
Далее на следующем этапе может отобразится следующее окно, если какие-то дополнительные компоненты отсутствуют в системе:
В данном случае программа установки показывает, что у меня не установлены Excel 2010 и Python. Поскольку эти компоненты не важны, нажимаем Next.
Затем на этапе установки инсталлятор отобразит весь список устанавливаемых компонентов. У меня он выглядит так:
Чтобы выполнить установку всех компонентов, нажмем кнопку Execute.
После того, как все компоненты будут установлены, нажмем кнопку Next.
Далее надо будет указать тип сервера. Выберем настройку по умолчанию Standalone MySQL Server / Classic MySQL Replication
Далее будет предложено установить ряд конфигурационных настроек сервера MySQL. Оставим настройки соединения и порта по умолчанию:
Затем на следующем окне прогаммы установки укажем какой-нибудь пароль, и запомним его, так как он потом потребуется при подключении к серверу MySQL:
Следующее окно позволяет настроить дополнительные плагины и расширения. Начиная с версии 5.7 в MySQL доступен X Protocol, который представляет новый способ
взаимодействия с хранилищем данных. Эту опцию необязательно отмечать. В данном случае я ее отмечу:
И на следующем экране необходимо применить все ранее установленные конфигурационные настройки, нажав на кнопку Execute:
После этого установка будет завершена. В трее появится уведомление о запуске сервера.
Все последующие окна конфигурации можно можно просто прощелкать и оставить все значения по умолчанию. В самом конце может отображаться следующее окно, на котором нужно будет нажать на кнопку Finish:
После этого установка и конфигурация сервера MySQL будет окончательно завершена, и мы можем использовать сервер для доступа к базам данных.
НазадВперед
Buffered and Unbuffered Cursor #
By default, the cursor object is unbuffered. What does that mean?
It simply means that the rows from the database server are not fetched until you call a row fetching method or iterate over the cursor object. In other words, unbuffered cursor produces result on demand. On the other hand, when a query is executed using a buffered cursor, the rows are read immediately into the buffer and the row fetching methods return rows from the set of buffered rows.
Use buffered cursor only when:
- You already know that the result set is small. or,
- You want to use the result of one query in another query
Keep in mind that, a buffered cursor will load all the rows into the memory at once. If you have a large result set then this can take quite a bit of memory and may even cause the program to crash if you don’t have sufficient memory. For this reason, when working with lthe arge result set you should always load results on demand (i.e use unbuffered cursor).
In the case of an unbuffered cursor, trying to close the cursor object or executing a new query before reading the result set from the old one will result in exception.
Here are two examples which demonstrate these facts in action:
Example 1: Closing cursor object before reading the result set
1 2 3 4 5 6 7 8 9 10 11 12 |
import mysql.connector from mysql.connector.cursor import MySQLCursor db = mysql.connector.connect(option_files='my.conf', use_pure=True) cursor = db.cursor() cursor.execute("select * from city limit 5") cursor.close() # closing cursor before reading the result set db.close() |
Expected Output:
1 2 3 4 |
Traceback (most recent call last): ... raise errors.InternalError("Unread result found") mysql.connector.errors.InternalError: Unread result found |
Example 2: Executing a new query before reading the result set from the old one.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import mysql.connector from mysql.connector.cursor import MySQLCursor db = mysql.connector.connect(option_files='my.conf', use_pure=True) cursor = db.cursor() cursor.execute("select * from city limit 5") # result set from the above query is not read # now we are executing a new query cursor.execute("""select Code, Name, Region, Population, Continent from country where Continent='North America' limit 5""") for row in cursor print(row) cursor.close() db.close() |
Expected Output:
1 2 3 4 |
Traceback (most recent call last): ... raise errors.InternalError("Unread result found") mysql.connector.errors.InternalError: Unread result found |
With the buffered cursors, however, you are allowed to execute a new query but the result set from the previous query will be discarded.
We will learn how to create buffered cursor later in this chapter.
Using and extending¶
In general, it is probably wise to not directly interact with the DB
API except for small applications. Databases, even SQL databases, vary
widely in capabilities and may have non-standard features. The DB API
does a good job of providing a reasonably portable interface but some
methods are non-portable. Specifically, the parameters accepted by
are completely implementation-dependent.
If you believe your application may need to run on several different
databases, the author recommends the following approach, based on
personal experience: Write a simplified API for your application which
implements the specific queries and operations your application needs
to perform. Implement this API as a base class which should be have
few database dependencies, and then derive a subclass from this which
implements the necessary dependencies. In this way, porting your
application to a new database should be a relatively simple matter of
creating a new subclass, assuming the new database is reasonably
standard.
Because MySQLdb’s Connection and Cursor objects are written in Python,
you can easily derive your own subclasses. There are several Cursor
classes in MySQLdb.cursors:
- BaseCursor
- The base class for Cursor objects. This does not raise Warnings.
- CursorStoreResultMixIn
- Causes the Cursor to use the function to
get the query result. The entire result set is stored on the
client side. - CursorUseResultMixIn
- Causes the cursor to use the function to
get the query result. The result set is stored on the server side
and is transferred row by row using fetch operations. - CursorTupleRowsMixIn
- Causes the cursor to return rows as a tuple of the column values.
- CursorDictRowsMixIn
- Causes the cursor to return rows as a dictionary, where the keys
are column names and the values are column values. Note that if
the column names are not unique, i.e., you are selecting from two
tables that share column names, some of them will be rewritten as
. This can be avoided by using the SQL
keyword. (This is yet-another reason not to use in SQL
queries, particularly where is involved.) - Cursor
- The default cursor class. This class is composed of
, ,
and , i.e. it raises
, uses , and returns rows as
tuples. - DictCursor
- Like except it returns rows as dictionaries.
- SSCursor
- A “server-side” cursor. Like but uses
. Use only if you are dealing with
potentially large result sets. - SSDictCursor
- Like except it returns rows as dictionaries.
Title: | MySQLdb: a Python interface for MySQL |
---|---|
Author: | Andy Dustman |
Version: | $Revision$ |
MySQLdb version example
In the first example, we will get the version of the MySQL database.
version.py
#!/usr/bin/python # -*- coding: utf-8 -*- import MySQLdb as mdb import sys try: con = mdb.connect('localhost', 'testuser', 'test623', 'testdb') cur = con.cursor() cur.execute("SELECT VERSION()") ver = cur.fetchone() print "Database version : %s " % ver except mdb.Error, e: print "Error %d: %s" % (e.args,e.args) sys.exit(1) finally: if con: con.close()
In this script, we connect to the testdb database and execute the
statement. This will return
the current version of the MySQL database. We print it to the console.
import MySQLdb as mdb
We import the module.
con = mdb.connect('localhost', 'testuser', 'test623', 'testdb');
We connect to the database using the method.
We pass four parameters: the hostname, the database user name, the password,
and the database name.
cur = con.cursor() cur.execute("SELECT VERSION()")
From the connection, we get the cursor object. The cursor is
used to traverse the records from the result set. We call
the method of the cursor and
execute the SQL statement.
ver = cur.fetchone()
We fetch the data. Since we retrieve only one record, we
call the method.
print "Database version : %s " % ver
We print the data that we have retrieved to the console.
except mdb.Error, e: print "Error %d: %s" % (e.args,e.args) sys.exit(1)
We check for errors.
finally: if con: con.close()
In the final step, we release the resources.
$ ./version.py Database version : 5.7.23-0ubuntu0.16.04.1
This is a sample output.
Creating a MySQL Database in Python
If you do not have a previously created database, you can easily create one by executing a CREATE query using the method. After establishing a connection with the server. Look at the code below.
import pymysql #server connection mydb = pymysql.connect( host="localhost", user="root", passwd="" ) mycursor = mydb.cursor() #cursor created #creating database with name classdb mycursor.execute("CREATE DATABASE classdb;")
Create New Database
After executing the above code, the above change can be seen in the database using phpMyAdmin. Here, the new database is successfully created.
If you already have a database, you can easily connect to it just by specifying the name inside the method. As shown below.
import pymysql #server connection mydb = pymysql.connect( host="localhost", user="root", database="classdb", #database created before passwd="" ) mycursor = mydb.cursor() #cursor created #work with the cursor here like printing initial database data #closing the cursor mycursor.close()
Заключение
В этом уроке я ознакомил вас с основами работы с хранимыми процедурами и с некоторыми специфическими свойствами, связанными с ней. Конечно, вам нужно будет углубить знания в таких областях, как безопасность, выражения SQL и оптимизация, прежде чем стать настоящим гуру MySQL процедур.
Вы должны подсчитать, какие преимущества даст вам использование хранимых процедур в вашем конкретном приложении, и только потом создавать лишь необходимые процедуры. В общем, я использую процедуры; по-моему, их стоит внедрять в проекты в следствие их безопасности, обслуживания кода и общего дизайна. К тому же, не забывайте, что над процедурами MySQL все еще ведется работа. Ожидайте улучшений, касающихся функциональности и улучшений. Прошу, не стесняйтесь делиться мнениями.