#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)