Python и MySQL: есть ли альтернатива MySQLdb?

Есть ли модуль, написанный исключительно на Python, который позволит script взаимодействовать с базой данных MySQL? Я уже пробовал MySQLdb без успеха. Это требует слишком много: GCC, zlib и openssl. У меня нет доступа к этим инструментам; даже если бы я это сделал, я не хочу тратить время на то, чтобы заставить их работать вместе. Я ищу инструменты, которые облегчат мою работу.

Может ли кто-нибудь указать мне в сторону модуля Python MySQL, написанного на Python? Если нет, советы по написанию моего собственного кода для общения с MySQL будут оценены.

Спасибо,

Тони


Спасибо всем за ваши ответы. Поскольку я работаю с небольшой базой данных (несколько сотен записей, в основном имена и адреса), я решил использовать SQLite. Я только что узнал об этом. Кажется, это идеально подходит для моих целей; он был прост в установке (занял около двух минут) и хорошо работает с Python. Я застрял с Python 2.4, поэтому я не могу использовать модуль sqlite3, но я могу общаться с базой данных с помощью функции subprocess.Popen и параметров командной строки Python.

Ответы

Ответ 1

В Sun появился проект для реализации 100% -ного драйвера python mysql.

https://launchpad.net/myconnpy

Я не нашел для него никакого кода. Но в соответствии с комментарием в блоге, это больше, чем паровозы.

Ответ 3

В последнее время также есть oursql (docs), который имеет различные преимущества перед MySQLdb и другими существующими драйверами - указан в верхней части документации.

Ответ 5

Как упоминалось в более раннем ответе, MySQL Connector/Python полностью реализует MySQL Server/Client в Python. Нет компиляции, просто установите.

Вот ссылки:
* https://launchpad.net/myconnpy
* code: https://code.launchpad.net/myconnpy
* скачать: https://launchpad.net/myconnpy/+download (разработка снимков)

Это еще не завершено, но у него должно быть достаточно, чтобы вы неслись. (FYI, я сопровождающий)

Ответ 6

У меня была проблема, что я хотел написать код, который работает для Python 2 и Python 3. Я нашел, что pymysql идеально подходит. Мне не нужно было настраивать код для переключения с MySQLdb на pymysql

Монтаж

$ pip install PyMySQL

Если у вас нет прав администратора:

$ pip install -u PyMySQL

использование

Использование такое же, как для MySQLdb:

ВЫБРАТЬ

import pymysql
import pymysql.cursors
connection = pymysql.connect(host=mysql['host'],
                             user=mysql['user'],
                             passwd=mysql['passwd'],
                             db=mysql['db'],
                             cursorclass=pymysql.cursors.DictCursor)
cursor = connection.cursor()
sql = ("SELECT 'id', 'formula_in_latex' FROM 'wm_formula' "
       "WHERE 'is_important' = 1 "
       "AND id != 1 "  # exclude trash class
       "ORDER BY 'id' ASC")
cursor.execute(sql)
formulas = cursor.fetchall()

ВСТАВИТЬ

import pymysql
connection = pymysql.connect(host=mysql['host'],
                             user=mysql['user'],
                             passwd=mysql['passwd'],
                             db=mysql['db'])
cursor = connection.cursor()
cursor.execute("INSERT INTO 'toys' ('id', 'arrival', 'duration') "
               "VALUES ('1', '2014-12-01', '123');")
connection.commit()

Ответ 7

Без сомнения, MySQLdb - лучшее решение, но если вы не можете его использовать...

Если у вас есть libmysqlclient. [so | dll], вы можете получить к нему доступ напрямую, используя ctypes module,

Ответ 8

Насколько я знаю, прямой альтернативы нет. Единственное, что я могу придумать, - это использовать ODBC вместо pyodbc. На сайте MySQL есть соединитель ODBC, который вы можете download. Но я никогда не использовал этот подход сам, поэтому не могу сказать, насколько хорошо он будет работать.