Драйверы Python3 MySQL

#mysql #python-3.x

#mysql #python-3.x

Вопрос:

Недавно я перешел на Python 3 (3.1 в системе FreeBSD), и я хотел бы работать с базами данных MySQL.

  • Сначала я попытался использовать pymysql3-0.4, но это не удалось, когда я использовал SUM в своем запросе с этой ошибкой: , TypeError(«Не удается преобразовать b’46691486′ в десятичное число»,))
  • Затем я попробовал oursql-0.9.2, но, похоже, у него нет поддержки сокетов unix (в документации написано иначе, но он не распознает протокол сокета.)
  • Наконец, я решил дать шанс mypysql-0.5.5, но установка не удалась.

Не могли бы вы порекомендовать мне правильно работающий драйвер MySQL для Python 3 или, по крайней мере, решить одну из этих проблем? Я был бы очень доволен.

Комментарии:

1. Это помогло бы увидеть код, который сгенерировал ошибку типа. Могут быть и другие причины, помимо водителя.

2. conn = pymysql.connect(host='127.0.0.1', user='test', passw='psw1', db='test', unix_socket='/tmp/mysql.sock') cur = conn.cursor() query = "SELECT SUM(data) FROM table WHERE date >= %d GROUP BY name" % time cur.execute(query)

3. Трассировка (последний последний вызов): Файл «processo.py «, строка 45<br/> cur.execute(«ВЫБРАТЬ СУММУ (данные) table , ОТКУДА дата >= %d ГРУППИРОВАТЬ ПО имени» % time) Файл «/usr/local/lib/python3.1/site-packages/pymysql/cursors.py «, строка 108, в execute self.errorhandler(self, exc, значение) Файл «/usr/local/lib/python3.1/site-packages/pymysql/connections.py «, строка 182, в defaulterrorhandler возникает ошибка (errorclass, errorvalue) pymysql.err.Error: (<class ‘TypeError’>, TypeError(«Не удается преобразовать b’146120235′ в десятичное число»,))

Ответ №1:

Документация oursql немного сложна. :$ Существует список параметров соединения, но он не содержит параметра unix_socket. Если я установлю это и параметр протокола, все будет работать нормально 🙂

Если у кого-то возникли проблемы со вставкой (get _statment charset AttributeError): https://bugs .launchpad.net/oursql / ошибка/669184 измените строки в oursql.c на код из отчета и перестройте его. (это будет исправлено в 0.9.3)