Уведомления

Группа в Telegram: @pythonsu

#1 Март 24, 2013 01:47:34

omatic
Зарегистрирован: 2013-03-24
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3 и MySQL выбор коннектора

Здраствуйте форумчане, тут недавно окунулся в Пайтон и заинтересовался кодингом на нем. Поставили передо мной задачку написать небольшую программу , которая берет данные с MySQL, что то с ними делает и результат в файлик записывает, вот я и решил использовать его.

Так вот суть вопроса, как работать с MySQL из Python?
По сути задания, все больше склоняюсь к поиску mysql конектора к Python 3, так как база у меня в UTF-8, а во втором Пайтоне с юникодом трудно, да и думаю нужно переходить со временем итак…

Погуглив и почитав форум, нашел пару вариантов простых, которые пользуются популярностю:

1. Mysqldb - только Python 2.х, с 3.х не работает, автор, в своем твиттере и блоге говорить что в ближайшем будущем напишет под новую версию, правда пока глухо. Писать софт хотелось бы под Python 3, или под Python 2 но с возможным переходом на 3, а тут как бы непонятно. http://sourceforge.net/projects/mysql-python/

2. На гитхабе нашел некую модификацию проекта MySQLdb для использование с Python 3.* http://github.com/davispuh/MySQL-for-Python-3 пишут, что местами баговая, делаеться не автором MySQLdb, но все же вариант.

3. Проект oursql, на сайте есть сравнение чем она лучше MySQLdb, родная поддержка юникода и Пайтона 3 очень заинтересовала, сайт проекта: http://pythonhosted.org/oursql/

4. Еще один проект на гитхабе, Python 3.x support. https://github.com/petehunt/PyMySQL

5. pyodbc - также не особо апдейтится, но есть поддержка Пайтона 3 http://code.google.com/p/pyodbc/

6. MySQL connector - офицыальный конектор, вроде активно начал розвиваться, но многие говорять что жутко лагает, куча багов и недоделок еще, и мало производителен в сравнение с Mysqldb http://dev.mysql.com/doc/connector-python/en/index.html

Уточню вопрос, что выбрать? С чем лучше и комфортнее работать с Вашей практики? Может есть еще альтернативы? Я понимаю однозначного ответа нет и не будет, и нужно будет что-то выбрать, но буду благодарен за ответы.

P.S. чесно говоря просто запутался уже с конекторами, так как новичок в деле и еще теряюсь немного от избытка инфы.

Офлайн

#2 Март 26, 2013 18:09:11

dsc
Зарегистрирован: 2013-03-26
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3 и MySQL выбор коннектора

Присоединяюсь к вопросу! Даже специально зарегистрировался ради этого Сам новичок в питоне, и с удивлением обнаружил, что для такой элементарной вещи, как подключение к MySQL да пары SELECT-ов нет простого и распространённого решения. 3 дня копал, но толком ничего в этом направлении не нашёл.

Офлайн

#3 Март 27, 2013 19:01:14

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Python 3 и MySQL выбор коннектора

omatic
так как база у меня в UTF-8, а во втором Пайтоне с юникодом трудно
Работал с MySQL из второго питона без проблем. Проблема юникода несколько преувеличена. Строки не юникодовые по умолчанию (в третьем наоборот, и всё), но никто не запрещает сделать их таковыми одним движением.
Народ довольно активно использует SQLAlchemy, насколько вижу.
dsc
и с удивлением обнаружил, что для такой элементарной вещи, как подключение к MySQL да пары SELECT-ов нет простого и распространённого решения.
Да ну. так же просто как к sqlite. Причем DB-API и является распространённым решением.

Отредактировано Shaman (Март 27, 2013 19:08:53)

Офлайн

#4 Март 27, 2013 23:41:48

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Python 3 и MySQL выбор коннектора

Работаю с 2007 года с базами данных на втором питоне, пока живой.
Для mysql классический вариант это MySQLdb пакет, ставится так:
pip install mysql-python

Офлайн

#5 Март 28, 2013 17:09:45

Saturn
От:
Зарегистрирован: 2012-03-22
Сообщения: 164
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3 и MySQL выбор коннектора

http://dev.mysql.com/doc/connector-python/en/index.html
Но правда к django не подходит, но с python 3.3 работает нормально



Офлайн

#6 Март 28, 2013 21:10:11

dsc
Зарегистрирован: 2013-03-26
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3 и MySQL выбор коннектора

Спасибо всем отписавшимся!

lorien
Работаю с 2007 года с базами данных на втором питоне, пока живой.Для mysql классический вариант это MySQLdb пакет, ставится так:pip install mysql-python
Забыл сказать, что я начал с 3-го питона, поэтому MySQLdb не подходит, т.к. пока не портирован на тройку.
После поисков, похожих на те, что были у ТС-а, я для себя остановился, всё-таки на PyMySQL. Напишу для omatic-а, что сделал, ну и для всех новичков, вдруг кому ещё пригодится. У меня убунта, поэтому опишу шаги для неё.
Для начала установим пакет “python3-setuptools”:
sudo apt-get install python3-setuptools
Далее, с помощью “easy_install3” установим “pymysql3”:
easy_install3 pymysql3
Собственно, и всё, можно пользоваться. Для примера, стандартные команды для работы с базой, выложенный автором PyMySQL и слегка подправленный мной:
import pymysql
conn = pymysql.connect(host='127.0.0.1', user='root', passwd='superpass', db='mysql', charset='utf8')
cur = conn.cursor()
cur.execute("SELECT Host,User FROM user")
# print cur.description
# r = cur.fetchall()
# print r
# ...or...
for r in cur:
   print (r)
cur.close()
conn.close()

Офлайн

#7 Март 29, 2013 10:33:26

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Python 3 и MySQL выбор коннектора

Ещё можно банально юзать алхимию. Да там много документации, но не обязательно сразу постигать таинства ORM, можно юзать её именно как коннектор к базе данных. Из кообки будут сразу доступны плюшки типа:

for row in conn.execute('select * from persons'):
print row.name
print row.age

P.S. Если честно не знаю, работает ли она на python3, вроде должна.

Офлайн

#8 Март 30, 2013 21:56:13

omatic
Зарегистрирован: 2013-03-24
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3 и MySQL выбор коннектора

Shaman,
Да, с кодировкой я немного перегнул, но сначала я начал изучать более подробно Python3, и там работа с юниодом более изящная, плюс со временем преходить нужно на 3 версию, но на вкус и цвет все карандашы разные

Shaman, lorien,
Я так понимаю SQLAlchemy не только поверх других конекторов можно использовать? но и как собственно конектор? Посмотрю в ее сторону и интеграцию с Python 3, спасибо

dsc, Спасибо, я пока остановился на офф. конекторе http://dev.mysql.com/doc/connector-python/en/index.html так как проект небольшой, сложных запросов нет, только простенькие селект и т.п.


П.С. а вот сразу назрел вопрос по ходу обсуждения, а с Джангой и Пайтон3 кто-то с конекторов роботает? Так как думаю к коду простенький веб прикрутить. Знаю что для Пайтон 2 использовался MySQLDB и поверх Django, а как с тройкой?

П.П.С. на офф сайте нашел инфу:

Django 1.5 introduces support for Python 3 - specifically, Python 3.2 and above.
Some features of Django aren’t available because they depend on third-party software that hasn’t been ported to Python 3 yet, including:

the MySQL database backend (depends on MySQLdb)
ImageField (depends on PIL)
LiveServerTestCase (depends on Selenium WebDriver)
https://docs.djangoproject.com/en/dev/releases/1.5/#python-3-support

Так-что пока, я так понял, использовать вторую версию нужно…

Отредактировано omatic (Март 30, 2013 22:01:31)

Офлайн

#9 Окт. 3, 2013 14:08:06

Ace
Зарегистрирован: 2012-09-05
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3 и MySQL выбор коннектора

Добрый !

Тот же вопрос - выбор коннектора.
инструменты самые новые:
- win 2003 x86
- python 3.3.2
- MySQL 5.6
- Mysql connector 1.0.12

Попробовал официальный коннектор из msi.
Импорт работает только так

import mysql
Но возможности работать с мускулом нет - нет методов коннекта и т.д
———————-
НЕ работает по тому алгоритму, как написано в референсе на коннектор
import mysql.connector

с ошибкой
importerror: No module named “mysql.connector”; mysql is not package

в файловой системе модуль вроде как установлен. Попробовал установить не через msi, а через сорс зип -результат тот же

Отредактировано Ace (Окт. 3, 2013 14:09:48)

Офлайн

#10 Окт. 6, 2013 19:32:10

k0st1an
Зарегистрирован: 2013-02-07
Сообщения: 86
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3 и MySQL выбор коннектора

Ace
Не знаю как в виндах, но для linux нужно ставить для каждой присутсвующей в системе версии python. Как правило python это символическая ссылка на python2.7. Потому надо ставить так:

python3.3 setup.py install



—-
memento mori

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version