2011/08/19

MySQL и Python

Итак, тут я расскажу как быстро развернуть СУБД мускуль и рулить ей из питона. Начнем. Сперва установим нужные пакеты. Мускуль:
# apt-get install mysql-server
В процессе установки спросят пароль для рута, лучше ввести что-нибудь и не забыть! Ставим модуль для питона:
# apt-get install python-mysqldb
Ну вот, после этого было бы неплохо создать базу данных и пользователя к ней. Логинимся под рутом:
$ mysql -u root -p
Создаем базу:
mysql> CREATE DATABASE testdb;
Создаем пользователя с паролем 'test', даем все права и выходим:
mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'test';
mysql> USE testdb;
mysql> GRANT ALL ON testdb.* TO 'user'@'localhost';
mysql> quit;
Теперь небольшой пример:
import MySQLdb as mdb

conn = mdb.connect('localhost', 'user', 'test', 'testdb')
cursor = conn.cursor()
cursor.execute("SELECT VERSION()")
data = cursor.fetchone()
print data
cursor.close()
conn.close()
Здесь просто выполняется запрос "SELECT VERSION()" и соотвественно версия субд выводится на экран. Функция fetchone() возвращает одну строку. Если запрос возвращает множество строк, то чтобы их получить можно использовать fetchall(). Но если записей очень много, то это может быть расточительно для памяти. В таком случае нам поможет атрибут rowcount, где содержится количество строк, которое вернул запрос:
cursor.execute("SELECT * FROM table")
numrows = int(cursor.rowcount)
for i in xrange(numrows):
    row = cursor.fetchone()
    print row
Кстати, row представляет из себя кортеж, так что можно с легкостью получить доступ к каждому элементу выборки. Ну а дальнейшие изыскания ограничиваются только вашими знаниями языка SQL!

No comments:

Post a Comment