Як я можу підключитися до MySQL в Python 3 в Windows?


145

Я використовую ActiveState Python 3 у Windows і хотів підключитися до моєї бази даних MySQL. Я чув, що це mysqldbбув модуль для використання. Я не можу знайти mysqldbдля Python 3.

Чи є сховище, де існують бінарні файли mysqldb? Як я можу підключитися до MySQL в Python 3 в Windows?


Завдяки casevh для посилання на неофіційні бінарні файли, але я був занадто нетерплячий , і здається , що маси все ще використовують python2 ... так що я встановив Python 2.7 і встановив MySQLDb від codegood.com/archives/129
panofish

1
можливий дублікат MySQL-db lib для Python 3.0?
itadok

1
Кожного разу, коли я набираю піп, у мене шум живота. 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, сподіваються злитись за якийсь день
  • Найшвидша реалізація, оскільки вона заснована на С.
  • Найбільш сумісний з 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 ви можете скористатись подібнимsudo apt-get install python3-mysql.connector
peiman F.

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, яка,
звичайно,

7
@Lohoris: Як я можу це використовувати без проблем?
Олег Припін

Мені не вдалося встановити це на Windows 7 за допомогою Python 3.x. Хтось знає як?
Павло

3
Тут використовується версія Python 3.3.1, яка не встановлюється. Поскаржується на відсутність модуля, який називається constants.
Pijusn

@Pius Тому що ти робиш це неправильно. Просто перевірено і воно працює.
Олег Припін

7

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

Тож я відмовився від pymysql і влаштувався на роз'єм Oracle MySQL .

Він поставляється як пакет налаштувань і працює поза коробкою. І це також здається гідно задокументованим.


Я використовував MySQLdb, і це чудово, але очевидно, я б очікував, що це стане стандартом дефакто з часом.
panofish

6

якщо ви хочете спочатку використовувати MySQLdb, вам слід встановити pymysql на ПК, ввівши cmd windows

    pip install pymysql

потім в оболонці пітона введіть

    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 встановити 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 ще не портований




1

На моєму mac os maverick я спробую це:

Після цього введіть інтерпретатор python3 та введіть:

  1. імпортувати pymysql . Якщо немає помилок, встановлення нормально. Для перевірки напишіть сценарій для підключення до mysql за допомогою цієї форми:

  2. # простий скрипт для підключення MySQL import pymysql db = pymysql.connect (host = "localhost", user = "root", passwd = "* ", db =" biblioteca ") # Впевнений, це інформація для мого db # закрити з'єднання db.close () *

Дайте ім’я (наприклад, "con.py") і збережіть його на робочому столі. У терміналі введіть "cd desktop", а потім $ python con.py Якщо помилки немає, ви підключились до сервера MySQL. Удачі!



0

Це не відповідає повністю на моє первісне запитання, але я вважаю, що важливо повідомити всім, що я зробив і чому.

Я вирішив продовжувати використовувати python 2.7 замість python 3 через поширеність 2.7 прикладів та модулів у мережі.

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


Мені цікаво, якщо ви все ще використовуєте 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 внутрішньо. BTW ... якщо вам також потрібно підключитися до MySQL через python в Maya ... використовуйте чистий python mysql роз'єм.
panofish

0

Я використовую cymysql з python3 на малиновому пі, який я просто встановив: sudo pip3 встановити cython sudo pip3 встановити cymysql там, де cython не потрібен, але повинен зробити cymysql швидше

Поки що це працює як шарм і дуже схоже на MySQLdb


0

Це швидкий підручник про те, як змусити Python 3.7 працювати з Mysql.
Дякую всім, від кого я отримав відповіді на мої запитання
- сподіваюся, це колись допоможе комусь.
-------------------------------------------------- -
Моя система:
Версія Windows: Pro 64-розрядна версія

ВИМОГИ .. завантажте та встановіть перші ...
1. Завантажте Xampp ..
https://www.apachefriends.org/download.html
2. Завантажте Python
https://www.python.org/downloads/windows/

- ------------
// METHOD
--------------
Встановіть 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 ...
Насолоджуйтесь ...


0

імпортувати pymysql

відкрите підключення до бази даних

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

підготувати об’єкт курсору за допомогою методу cursor ()

cursor = db.cursor ()

sql = "ВИБРАТИ * З елемента"

cursor.execute (sql)

Вилучити всі рядки у списку списків.

results = cursor.fetchall () для рядка в результатах: item_title = рядок [1] ​​коментар = рядок [2] print ("Назва елементів наступна =% s, коментарі наступні =% s"% \ (item_title, коментар))

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.