MySQL и python

Модератор: Модераторы разделов

Аватара пользователя
amorphius
Сообщения: 353
ОС: Ubuntu

MySQL и python

Сообщение amorphius »

Пишу на питоне в eclipse. Нужен мне MySQL. Установил библиотеку MySQL для питона. Пишу простенький код:

Код: Выделить всё

import MySQLdb
db = MySQLdb.connect("localhost","user","passwd","db")
cursor = db.cursor

Выскакивает ошибка о том, что не знает что такое cursor в объекте db. Пробовал _mysql. Все равно откуда то берутся ошибки, что подобных методов или атрибутов не существует. Такое впечатление что не все установил что надо.
Подскажите пожалуйста как получить доступ к базам данных в питоне.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: MySQL и python

Сообщение Portnov »

Проверьте сначала, благополучно ли получается подцепиться к базе. Я не помню, что эта либа делает при ошибке подключения - кидает exception или просто возвращает None, смотрите в документации. Т.е., вероятно, у вас db is None.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
amorphius
Сообщения: 353
ОС: Ubuntu

Re: MySQL и python

Сообщение amorphius »

база данных существует и с помощью phpmyadmin спокойно могу подключиться к ней
а пример этот и так с доков взят по сути
я программирую только вторую неделю на питоне в pydev, так что даже не знаю как трассировать скрипт, чтоб выяснить чему равно db, после вызова метода MySQLdb.connect. Может кто подскажет?
Вопрос номер 2: даже если db is None, разве об этом известно интерпретатору на этапе написания скрипта? В смысле почему после инициализации переменной db, которая является объектом класса Connection, не отображаются все методы данного класса? Ведь у класса Connection судя по докам есть атрибут cursor, который и выполняет всю работу по обработке баз данных, но в выпадающем списке после "db." нет и близко никакого атрибута Cursor.
Помогите пожалуйста
Спасибо сказали:
Аватара пользователя
amorphius
Сообщения: 353
ОС: Ubuntu

Re: MySQL и python

Сообщение amorphius »

проблема частично решена, оказывается многих методов и атрибутов просто нет в всплывающей подсказке. То есть атрибут cursor существует в классе MySQLdb, он просто почему то не отображается в выпадающем списке атрибутов и методов класса:(
Есть ли IDE с нормально работающим автозаполнением кода?
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: MySQL и python

Сообщение Portnov »

amorphius писал(а):
13.01.2009 20:24
Выскакивает ошибка о том, что не знает что такое cursor в объекте db

Как из этой фразы кто-то должен был понять, что имеется ввиду отсутствие атрибута в списке автодополнения в pydev? Телепаты в бессрочном отпуске.

amorphius писал(а):
14.01.2009 02:15
как трассировать скрипт, чтоб выяснить чему равно db, после вызова метода MySQLdb.connect. Может кто подскажет?


Код: Выделить всё

print db


amorphius писал(а):
14.01.2009 02:15
Вопрос номер 2: даже если db is None, разве об этом известно интерпретатору на этапе написания скрипта? В смысле почему после инициализации переменной db, которая является объектом класса Connection, не отображаются все методы данного класса? Ведь у класса Connection судя по докам есть атрибут cursor, который и выполняет всю работу по обработке баз данных, но в выпадающем списке после "db." нет и близко никакого атрибута Cursor.


В тот момент, когда вы пишете код, никакой инициализации переменных не происходит (программ начинает выполняться только после запуска, никак не в момент написания). А т.к. Python - динамический язык, атрибуты у объектов могут появляться и исчезать во время выполнения программы.


amorphius писал(а):
14.01.2009 13:06
Есть ли IDE с нормально работающим автозаполнением кода?

Повторяюсь: IDE во время написания кода не может знать, какие методы будут у объекта db в вашем примере, ибо не может знать даже его тип (он станет известен только во время выполнения программы). Так что автодополнение - это только способ ускорить ввод длинных идентификаторов, не более. Для получения информации о методах/атрибутах разных классов предназначена документация.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
amorphius
Сообщения: 353
ОС: Ubuntu

Re: MySQL и python

Сообщение amorphius »

одно дело если б я хотел чего то нереального, но ведь отличное автозаполнение реализовано в Microsoft Visual Studio.
Я просто хочу найти достойную замену на линуксе
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: MySQL и python

Сообщение Portnov »

Вы действительно хотите нереального, и я вам выше объяснил, почему. В VisualStudio вы, видимо, работали с языками C/C++, которые используют статическую типизацию, т.е. тип объекта (и, соответственно, набор атрибутов объекта) в них можно узнать на стадии компиляции, до запуска программы. Ведь в C++ вы явно объявляете тип объекта, и из информации о типе VisualStudio получает набор атрибутов и всё остальное.

Python же использует динамическую типизацию: типы объектов (и, соответственно, набор атрибутов) становятся известны только во время выполнения.

Т.е. дело в данном случае не в IDE, а в языке. Если вам почему-либо такая особенность Питона не нравится - не используйте его.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
amorphius
Сообщения: 353
ОС: Ubuntu

Re: MySQL и python

Сообщение amorphius »

а, понятно, сразу как то не подумал что с типами дело иначе обстоит
спс, топик клоузд
Спасибо сказали:
test157
Сообщения: 124
ОС: Debian Lenny

Re: MySQL и python

Сообщение test157 »

в Wing IDE автокомплит работает по лучше, в том числе для MySQLdb - для новичка имхо самое то, еще из огромных плюсов для каждого объекта, функции, метода, и тд - выводит полную документацию при ее выборе в автокомплите.

P.S.: надеюсь в PyDev всеже со временем сделают нормальный автокомплит, сам оч привык к эклипсу.
Спасибо сказали:
Аватара пользователя
razum
Сообщения: 189
ОС: Gentoo 64

Re: MySQL и python

Сообщение razum »

автокомпилит и свертка Wing Ide - только в полной версии, которая немножко платная*
впрочем бесплатной можно ставить брекпоинты, что для отладки и хватит.
_______________
* - впрочем, кто ищет, тот всегда найдет :ph34r:
Спасибо сказали:
Аватара пользователя
Jonnywalker
Сообщения: 60
ОС: Debian

Re: MySQL и python

Сообщение Jonnywalker »

Попробуйте Komodo Edit.
http://www.activestate.com/komodo_edit/
Неплохое автодополнение по стандартной библиотеке и по вашим собственным методам и функциям, по крайней мере в php :) Знаю, что для python оно тоже есть.

Есть и более функциональная платная версия komodo ide.
Спасибо сказали: