MySQL

Материал из PythonWiki.

Перейти к: навигация, поиск

Для взаимодействия с базами данных MySQL предназначена библиотека - MySQLdb.

Содержание

Описание MySQLdb

Драйвер MySQLdb разработан Энди Дастманом. Предназначен для установки на различные платформы и операционные системы, главное требование наличие интерпретатора python.

Инсталяция MySQLdb

Для инстоляции драйвера в Вашу систему необходимо скачать дистрибутив, для этого достаточно перейти на страницу загрузкии выбрать пакет соответствующий вашей операционной системе и версии установленного python интерпретатора.

Далее установить пакет так, как обычно Вы устанавливаете любое программное обеспечение в Вашей системе.

Работа с MySQLdb

Импорт модуля и подключение к базе данных

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

Пример:

    # -*- coding: cp1251 -*-
    import MySQLdb
    MyDB = MySQLdb.Connect(host="localhost", user="root", passwd="", db="test")
    cursor = MyDB.cursor()

Извлечение данных

После подключения к серверу баз данных можно посылать ему запросы с помощью методов execute() и executemany(), Оба они в качестве первого аргумента принимают текст запроса. Метод fetchall() возвращает весь набор запроса в виде массива, а метод fetchone() возвращает следующую запись из набора.

Пример:

    cursor.execute("SELECT * FROM `testuser`")
    print cursor.fetchall()

результат будет получен в формате tuple. чтобы получить данные в формате dict, нужно использовать другой тип курсора:

conn = MySQLdb.connect(....,  cursorclass=cursors.DictCursor)

Изменение данных

Запросы на изменение данных (добавление, удаление) также производятся с помощью метода execute(), но в отличии от запросов на извлечение данных, метод execute() не возвращает данных. Если Вам требуется узнать количество измененных данных, используйте свойство rowcount объекта cursor.

Пример

    # Создаём таблицу test
    query = "CREATE TABLE test (id CHAR( 10 ) NOT NULL , name CHAR( 255 ) NOT NULL);"
    cursor.execute(query)
    # Добавляем в таблицу test запись
    query = "INSERT INTO test (id , name) VALUES (yzer, Pupkin Ivan);"
    cursor.execute(query)    
    # Gt
    print str(cursor.rowcount) + "строк вставлено"

MySQLdb поддерживает работу с placeholder-ми.

    query = "INSERT INTO test (id , name) VALUES (%s, %s);"
    cursor.execute(query, ("yzer", "Pupkin Ivan"))

placeholder-ы поддерживаются только строковые. при работе с численными данными, преобразовании строки к числу производится средствами сервера MySQL

Объект cursor() из MySQLdb

    cursor.execute(query) 
    l_Count = cursor.rowcount #получить количество строк последнего запроса
    l_Description = cursor.description #получить описание полей
Личные инструменты