Как я могу подключиться к MySQL в Python 3 на Windows?

145

Я использую ActiveState Python 3 в Windows и хотел подключиться к моей базе данных MySQL. Я слышал, что это mysqldbбыл модуль для использования. Я не могу найти mysqldbдля Python 3.

Есть ли доступный репозиторий, для которого существуют двоичные файлы mysqldb? Как я могу подключиться к MySQL в Python 3 на Windows?

panofish
источник
Спасибо casevh за ссылку на неофициальные двоичные файлы, но я был слишком нетерпелив, и кажется, что массы все еще используют python2 ... поэтому я установил python 2.7 и установил MySQLdb с codegood.com/archives/129
panofish
1
возможный дубликат MySQL-db lib для Python 3.0?
itadok
1
Каждый раз, когда я набираю pip, у меня болтается желудок. 7 лет и считая.
Ска

Ответы:

274

В настоящее время есть несколько вариантов использования Python 3 с mysql:

https://pypi.python.org/pypi/mysql-connector-python

  • Официально поддерживается Oracle
  • Чистый питон
  • Немного медленно
  • Не совместим с MySQLdb

https://pypi.python.org/pypi/pymysql

  • Чистый питон
  • Быстрее, чем MySQL-разъем
  • Почти полностью совместим с MySQLdb, после звонкаpymysql.install_as_MySQLdb()

https://pypi.python.org/pypi/cymysql

  • форк pymysql с дополнительными ускорениями C

https://pypi.python.org/pypi/mysqlclient

  • Библиотека, рекомендованная Джанго.
  • Дружественный форк оригинальной MySQLdb, надеется когда-нибудь слиться
  • Самая быстрая реализация, так как она основана на C.
  • Наиболее совместим с MySQLdb, так как это форк
  • Debian и Ubuntu используют его для предоставления как пакетов, так python-mysqldbи python3-mysqldbпакетов.

тесты здесь: https://github.com/methane/mysql-driver-benchmarks

Коллин Андерсон
источник
26
pip install mysqlclient просто работал на меня! спасибо за исчерпывающий список опций.
ILMostro_7
4
mysqlclientтолько что работал для моей установки Python3.4 + Django + Passenger + Dreamhost.
ryanjdillon
Ubuntu имеет mysqlclient Debian не
ManuelSchneid3r
Похоже, что mysqlclient находится в Debian testingкак python3-mysqldb, но не в stable. Так будет и в следующей версии.
Коллин Андерсон
Для установки MySQL коннектора на Ubuntu вы можете использовать apt, какsudo apt-get install python3-mysql.connector
Пейман Ф.
67

Вы, вероятно, должны использовать вместо pymysql - Pure Python MySQL клиент .
Он работает с Python 3.x и не имеет никаких зависимостей.

Этот чистый клиент Python MySQL предоставляет DB-API для базы данных MySQL, общаясь напрямую с сервером через двоичный протокол клиент / сервер.

Пример:

import pymysql
conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock', user='root', passwd=None, db='mysql')
cur = conn.cursor()
cur.execute("SELECT Host,User FROM user")
for r in cur:
    print(r)
cur.close()
conn.close()
Олег Припин
источник
14
к сожалению, это библиотека, документированная ZERO, которая просто не работает
o0 '.
7
@Lohoris: Почему я использую его без проблем?
Олег Припин
Я не смог установить это на Windows 7 с Python 3.x. Кто-нибудь знает как?
Пол
3
Python версии 3.3.1 здесь и не устанавливается. Жалуется на отсутствующий модуль под названием constants.
Пиюсн
@Pius Потому что ты делаешь это неправильно. Только что проверил и все работает.
Олег Припин
7

Я также попытался использовать pymysql (на моей машине с Win7 x64, Python 3.3), но мне не повезло. Я скачал .tar.gz, распаковал, запустил «setup.py install», и все выглядело нормально. Пока я не попытался подключиться к базе данных, и получил «KeyError [56]». Ошибка, которую я не смог найти нигде.

Поэтому я отказался от pymysql и остановился на коннекторе Oracle MySQL .

Он поставляется в виде установочного пакета и работает из коробки. И это также кажется прилично задокументированным.

Богдо
источник
Я использовал MySQLdb, и это прекрасно работает, но, очевидно, я ожидаю, что со временем это станет стандартом де-факто.
Панофиш
6

если вы хотите сначала использовать MySQLdb, вам нужно установить pymysql на свой компьютер, набрав cmd из windows

    pip install pymysql

затем в оболочке python введите

    import pymysql
    pymysql.install_as_MySQLdb()
    import MySQLdb
    db = MySQLdb.connect("localhost" , "root" , "password")

это установит соединение.

ямочка
источник
5

Резюме

Mysqlclient является лучшей альтернативой (IMHO), потому что он работает безупречно с Python 3+ , соответствует ожидаемым соглашениям (в отличие от коннектора mysql), использует имя объекта mysqldb, которое обеспечивает удобное портирование существующего программного обеспечения, и используется Django для сборок Python 3

Есть ли доступный репозиторий, где существуют двоичные файлы для mysqldb?

Да. mysqlclient позволяет использовать функции mysqldb. Однако помните, что это не прямой порт mysqldb, а сборка mysqlclient

Как я могу подключиться к MySQL в Python 3 на Windows?

pip install mysqlclient

пример

#!/Python36/python
#Please change above path to suit your platform.  Am running it on Windows
import MySQLdb
db = MySQLdb.connect(user="my-username",passwd="my-password",host="localhost",db="my-databasename")
cursor = db.cursor()
cursor.execute("SELECT * from my-table-name")
data=cursor.fetchall()
for row in data :
    print (row)
db.close()

Я не могу найти mysqldb для Python 3.

mysqldb еще не был портирован

Рахул
источник
4

PyMySQL также предоставляет MySQLDb-подобный интерфейс. Вы можете попробовать в вашей инициализации:

import pymysql
pymysql.install_as_MySQLdb()

Также есть порт mysql-python на github для python3.

https://github.com/davispuh/MySQL-for-Python-3

sagarchalise
источник
1

На моем Mac OS Maverick я пытаюсь это:

После этого введите интерпретатор python3 и введите:

  1. импорт pymysql . Если ошибки нет, ваша установка в порядке. Для проверки напишите скрипт для подключения к mysql с помощью этой формы:

  2. # простой скрипт для импорта соединения MySQL pymysql db = pymysql.connect (host = "localhost", user = "root", passwd = "* ", db =" biblioteca ") # Конечно, это информация для моего db # закрыть соединение db.close () *

Дайте ему имя (например, «con.py») и сохраните его на рабочем столе. В Терминале введите «cd desktop» и затем $ python con.py. Если ошибки нет, вы подключены к серверу MySQL. Удачи!

duke2909
источник
0

CyMySQL https://github.com/nakagami/CyMySQL

Я установил pip на моем Windows 7, с Python 3.3 просто установить pip cymysql

(вам не нужен Cython) быстро и безболезненно

Lazik
источник
0

Это не полностью отвечает на мой первоначальный вопрос, но я думаю, что важно, чтобы все знали, что я сделал и почему.

Я решил продолжить использовать python 2.7 вместо python 3 из-за распространенности 2.7 примеров и модулей в сети в целом.

Теперь я использую оба mysqldb и mysql.connector для подключения к MySQL в Python 2.7. Оба великолепны и работают хорошо. Однако я думаю, что mysql.connector в конечном итоге лучше в долгосрочной перспективе.

panofish
источник
Мне интересно, если вы все еще используете Python 2.7. В целом, я думаю, что действительно важно перейти на Python 3, и я был удивлен, увидев, как многие программисты выбирают Python 2.7 для новых проектов. Как все получилось?
vy32
@ vy32 Я думаю, что вы можете быть менее удивлены разработчиками, выбравшими py27, если учесть, что многие серверные ОС не поддерживают напрямую Python 3. Red Hat Enterprise Linux до сих пор была в комплекте с Python 2.6 до самой последней версии, и даже эта только имеет py27.
coredumperror
Другая причина использовать Python 2.7 заключается в том, что Maya (которая поддерживает python) использует 2.7 для внутреннего использования. Кстати ... если вам также нужно подключиться к MySQL через Python в Maya ... используйте чистый Python MySQL соединитель.
panofish
0

Я использую cymysql с python3 на Raspberry Pi, я просто установил: sudo pip3 установить cython sudo pip3 установить cymysql, где cython не нужен, но должен сделать cymysql быстрее

Пока он работает как шарм и очень похож на MySQLdb

Жако
источник
0

Это краткое руководство о том, как заставить Python 3.7 работать с Mysql.
Спасибо всем, от кого я получил ответы на мои вопросы
- надеюсь, это когда-нибудь кому-нибудь поможет.
-------------------------------------------------- -
Моя система:
Версия для Windows: Pro 64-bit

ТРЕБОВАНИЯ .. сначала загрузите и установите их ...
1. Загрузите Xampp ..
https://www.apachefriends.org/download.html
2. Загрузите Python
https://www.python.org/downloads/windows/

- ------------
// МЕТОД
--------------
Сначала установите xampp после завершения установки - установите Python 3.7.
После завершения установки обоих - перезагрузите систему Windows.
Теперь запустите xampp и с панели управления - запустите сервер mysql.
Подтвердите версии, открыв CMD и в типе терминала

c:\>cd c:\xampp\mysql\bin

c:\xampp\mysql\bin>mysql -h localhost -v
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.21-MariaDB mariadb.org binary distribution

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Это проверить версию MYSQL

c:\xampp\mysql\bin>python
Python 3.7.0b3 (v3.7.0b3:4e7efa9c6f, Mar 29 2018, 18:42:04) [MSC v.1913 64 bit (AMD64)] on win32

Это для проверки версии Python.
Теперь, когда оба подтверждены, введите в CMD следующее:

c:\xampp\mysql\bin>pip install pymysql

После завершения установки pymysql.
создайте новый файл с именем «testconn.py» на рабочем столе или там, где это необходимо для быстрого доступа.
Откройте этот файл с помощью возвышенного или другого текстового редактора и вставьте его в него.
Не забудьте изменить настройки, чтобы они отражали вашу базу данных.

#!/usr/bin/python
import pymysql
pymysql.install_as_MySQLdb() 

import MySQLdb
db = MySQLdb.connect(user="yourusernamehere",passwd="yourpasswordhere",host="yourhosthere",db="yourdatabasehere")
cursor = db.cursor()
cursor.execute("SELECT * from yourmysqltablehere")
data=cursor.fetchall()
for row in data :
    print (row)
db.close()

Теперь в вашем CMD - введите

c:\Desktop>testconn.py

И это все ... теперь вы полностью подключены от сценария Python к MySQL ...
Наслаждайтесь ...

Kybrd
источник
0

импорт pymysql

открытое соединение с базой данных

db = pymysql.connect ("localhost", "root", "", "ornament")

подготовить объект курсора с помощью метода cursor ()

cursor = db.cursor ()

sql = "SELECT * FROM item"

cursor.execute (SQL)

Получить все строки в списке списков.

results = cursor.fetchall () для строки в результатах: item_title = row [1] comment = row [2] print ("Название элементов следующее =% s, комментарии следующие =% s"% \ (item_title, комментарий))

Amjad
источник