import MySQLdb
db = MySQLdb.connect("localhost","user","passwd","db")
cursor = db.cursor
Выскакивает ошибка о том, что не знает что такое cursor в объекте db. Пробовал _mysql. Все равно откуда то берутся ошибки, что подобных методов или атрибутов не существует. Такое впечатление что не все установил что надо.
Подскажите пожалуйста как получить доступ к базам данных в питоне.
Проверьте сначала, благополучно ли получается подцепиться к базе. Я не помню, что эта либа делает при ошибке подключения - кидает exception или просто возвращает None, смотрите в документации. Т.е., вероятно, у вас db is None.
база данных существует и с помощью phpmyadmin спокойно могу подключиться к ней
а пример этот и так с доков взят по сути
я программирую только вторую неделю на питоне в pydev, так что даже не знаю как трассировать скрипт, чтоб выяснить чему равно db, после вызова метода MySQLdb.connect. Может кто подскажет?
Вопрос номер 2: даже если db is None, разве об этом известно интерпретатору на этапе написания скрипта? В смысле почему после инициализации переменной db, которая является объектом класса Connection, не отображаются все методы данного класса? Ведь у класса Connection судя по докам есть атрибут cursor, который и выполняет всю работу по обработке баз данных, но в выпадающем списке после "db." нет и близко никакого атрибута Cursor.
Помогите пожалуйста
проблема частично решена, оказывается многих методов и атрибутов просто нет в всплывающей подсказке. То есть атрибут cursor существует в классе MySQLdb, он просто почему то не отображается в выпадающем списке атрибутов и методов класса
Есть ли IDE с нормально работающим автозаполнением кода?
Вопрос номер 2: даже если db is None, разве об этом известно интерпретатору на этапе написания скрипта? В смысле почему после инициализации переменной db, которая является объектом класса Connection, не отображаются все методы данного класса? Ведь у класса Connection судя по докам есть атрибут cursor, который и выполняет всю работу по обработке баз данных, но в выпадающем списке после "db." нет и близко никакого атрибута Cursor.
В тот момент, когда вы пишете код, никакой инициализации переменных не происходит (программ начинает выполняться только после запуска, никак не в момент написания). А т.к. Python - динамический язык, атрибуты у объектов могут появляться и исчезать во время выполнения программы.
Есть ли IDE с нормально работающим автозаполнением кода?
Повторяюсь: IDE во время написания кода не может знать, какие методы будут у объекта db в вашем примере, ибо не может знать даже его тип (он станет известен только во время выполнения программы). Так что автодополнение - это только способ ускорить ввод длинных идентификаторов, не более. Для получения информации о методах/атрибутах разных классов предназначена документация.
одно дело если б я хотел чего то нереального, но ведь отличное автозаполнение реализовано в Microsoft Visual Studio.
Я просто хочу найти достойную замену на линуксе
Вы действительно хотите нереального, и я вам выше объяснил, почему. В VisualStudio вы, видимо, работали с языками C/C++, которые используют статическую типизацию, т.е. тип объекта (и, соответственно, набор атрибутов объекта) в них можно узнать на стадии компиляции, до запуска программы. Ведь в C++ вы явно объявляете тип объекта, и из информации о типе VisualStudio получает набор атрибутов и всё остальное.
Python же использует динамическую типизацию: типы объектов (и, соответственно, набор атрибутов) становятся известны только во время выполнения.
Т.е. дело в данном случае не в IDE, а в языке. Если вам почему-либо такая особенность Питона не нравится - не используйте его.
в Wing IDE автокомплит работает по лучше, в том числе для MySQLdb - для новичка имхо самое то, еще из огромных плюсов для каждого объекта, функции, метода, и тд - выводит полную документацию при ее выборе в автокомплите.
P.S.: надеюсь в PyDev всеже со временем сделают нормальный автокомплит, сам оч привык к эклипсу.
автокомпилит и свертка Wing Ide - только в полной версии, которая немножко платная*
впрочем бесплатной можно ставить брекпоинты, что для отладки и хватит.
_______________
* - впрочем, кто ищет, тот всегда найдет
Попробуйте Komodo Edit. http://www.activestate.com/komodo_edit/
Неплохое автодополнение по стандартной библиотеке и по вашим собственным методам и функциям, по крайней мере в php Знаю, что для python оно тоже есть.
Есть и более функциональная платная версия komodo ide.