Найти - Пользователи
Полная версия: Python 3 и MySQL выбор коннектора
Начало » Базы данных » Python 3 и MySQL выбор коннектора
1 2
omatic
Здраствуйте форумчане, тут недавно окунулся в Пайтон и заинтересовался кодингом на нем. Поставили передо мной задачку написать небольшую программу , которая берет данные с 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. чесно говоря просто запутался уже с конекторами, так как новичок в деле и еще теряюсь немного от избытка инфы.
dsc
Присоединяюсь к вопросу! Даже специально зарегистрировался ради этого Сам новичок в питоне, и с удивлением обнаружил, что для такой элементарной вещи, как подключение к MySQL да пары SELECT-ов нет простого и распространённого решения. 3 дня копал, но толком ничего в этом направлении не нашёл.
Shaman
omatic
так как база у меня в UTF-8, а во втором Пайтоне с юникодом трудно
Работал с MySQL из второго питона без проблем. Проблема юникода несколько преувеличена. Строки не юникодовые по умолчанию (в третьем наоборот, и всё), но никто не запрещает сделать их таковыми одним движением.
Народ довольно активно использует SQLAlchemy, насколько вижу.
dsc
и с удивлением обнаружил, что для такой элементарной вещи, как подключение к MySQL да пары SELECT-ов нет простого и распространённого решения.
Да ну. так же просто как к sqlite. Причем DB-API и является распространённым решением.
lorien
Работаю с 2007 года с базами данных на втором питоне, пока живой.
Для mysql классический вариант это MySQLdb пакет, ставится так:
pip install mysql-python
Saturn
http://dev.mysql.com/doc/connector-python/en/index.html
Но правда к django не подходит, но с python 3.3 работает нормально
dsc
Спасибо всем отписавшимся!
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()
lorien
Ещё можно банально юзать алхимию. Да там много документации, но не обязательно сразу постигать таинства ORM, можно юзать её именно как коннектор к базе данных. Из кообки будут сразу доступны плюшки типа:
for row in conn.execute('select * from persons'):
print row.name
print row.age

P.S. Если честно не знаю, работает ли она на python3, вроде должна.
omatic
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

Так-что пока, я так понял, использовать вторую версию нужно…
Ace
Добрый !

Тот же вопрос - выбор коннектора.
инструменты самые новые:
- 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, а через сорс зип -результат тот же
k0st1an
Ace
Не знаю как в виндах, но для linux нужно ставить для каждой присутсвующей в системе версии python. Как правило python это символическая ссылка на python2.7. Потому надо ставить так:

python3.3 setup.py install
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB