Como posso me conectar ao MySQL no Python 3 no Windows?

145

Estou usando o ActiveState Python 3 no Windows e queria me conectar ao meu banco de dados MySQL. Ouvi dizer que esse mysqldbera o módulo a ser usado. Não encontro o mysqldbPython 3.

Existe um repositório disponível para o qual os binários existem mysqldb? Como posso me conectar ao MySQL no Python 3 no Windows?

panofish
fonte
Graças a casevh pelo link para os binários não oficiais, mas fiquei impaciente e parece que as massas ainda estão usando python2 ... então instalei o python 2.7 e instalei o MySQLdb em codegood.com/archives/129
panofish
1
possível duplicata do MySQL-db lib para Python 3.0?
itsadok
1
Toda vez que digito pip, meu estômago revira. 7 anos e contando.
Ska

Respostas:

274

Atualmente, existem algumas opções para usar o Python 3 com o mysql:

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

  • Oficialmente suportado pela Oracle
  • Pitão puro
  • Um pouco lento
  • Não é compatível com MySQLdb

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

  • Pitão puro
  • Mais rápido que o mysql-connector
  • Quase completamente compatível com MySQLdb, depois de ligarpymysql.install_as_MySQLdb()

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

  • fork do pymysql com acelerações C opcionais

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

  • Biblioteca recomendada do Django.
  • Amigável fork do MySQLdb original, espera voltar um dia
  • A implementação mais rápida, pois é baseada em C.
  • O mais compatível com o MySQLdb, pois é um fork
  • O Debian e o Ubuntu o utilizam para fornecer pacotes python-mysqldbe python3-mysqldbpacotes.

aqui: https://github.com/methane/mysql-driver-benchmarks

Collin Anderson
fonte
26
pip install mysqlclient apenas funcionou para mim! obrigado pela lista abrangente de opções.
ILMostro_7
4
mysqlclientacabei de trabalhar na minha instalação do Python3.4 + Django + Passenger + Dreamhost.
Ryanjdillon 21/03
Ubuntu tem mysqlclient Debian não
ManuelSchneid3r
Parece que o mysqlclient está no debian testingcomo python3-mysqldb, mas não está stable. Então será na próxima versão.
Collin Anderson
para instalar o conector mysql no ubuntu você pode usar um apt comosudo apt-get install python3-mysql.connector
peiman F.
67

Você provavelmente deve usar o cliente pymysql - Pure Python MySQL .
Funciona com o Python 3.xe não possui dependências.

Este cliente MySQL Python puro fornece uma API de banco de dados para um banco de dados MySQL, conversando diretamente com o servidor através do protocolo binário cliente / servidor.

Exemplo:

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()
Oleh Prypin
fonte
14
infelizmente, é uma biblioteca documentada com ZERO que simplesmente não funciona
o0 '.
7
@ Lohoris: Como é que eu estou usando sem problemas?
precisa saber é o seguinte
Não consegui instalar isso no Windows 7 com o Python 3.x. Alguém sabe como?
9133 paul
3
Python versão 3.3.1 aqui e não é instalado. Reclama sobre o módulo ausente chamado constants.
Pijusn 8/08/2013
@ Pius Porque você está fazendo errado. Apenas verificado e funciona.
Oleh Prypin
7

Eu também tentei usar o pymysql (na minha máquina Win7 x64, Python 3.3), sem muita sorte. Eu baixei o arquivo .tar.gz, extrai, executei "setup.py install" e tudo parecia bem. Até eu tentar me conectar a um banco de dados e obter "KeyError [56]". Um erro que não consegui encontrar documentado em nenhum lugar.

Então desisti do pymysql e decidi pelo conector Oracle MySQL .

Ele vem como um pacote de instalação e funciona imediatamente. E também parece decentemente documentado.

Bogd
fonte
Eu estava usando o MySQLdb e isso funciona muito bem, mas claramente, eu esperaria que isso se tornasse o padrão defacto ao longo do tempo.
panofish
6

Se você deseja usar o MySQLdb primeiro, você deve instalar o pymysql no seu PC digitando cmd do windows

    pip install pymysql

em seguida, no shell python, digite

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

isso estabelecerá a conexão.

Ondulação
fonte
5

Resumo

O Mysqlclient é a melhor alternativa (IMHO) porque funciona perfeitamente com o Python 3+ , segue as convenções esperadas (ao contrário do conector mysql), usa o nome do objeto mysqldb que permite a portabilidade conveniente do software existente e é usado pelo Django para compilações do Python 3

Existe um repositório disponível onde os binários existem para o mysqldb?

Sim. O mysqlclient permite que você use as funções do mysqldb. Porém, lembre-se de que essa não é uma porta direta do mysqldb, mas uma compilação do mysqlclient

Como posso me conectar ao MySQL no Python 3 no Windows?

instalar o mysqlclient

Exemplo

#!/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()

Não consigo encontrar o mysqldb para Python 3.

O mysqldb ainda não foi portado

Rahul
fonte
4

O PyMySQL também fornece uma interface semelhante ao MySQLDb. Você pode tentar na sua inicialização:

import pymysql
pymysql.install_as_MySQLdb()

Também existe uma porta do mysql-python no github para python3.

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

sagarchalise
fonte
1

No meu mac os maverick eu tento isso:

Depois disso, digite o interpretador python3 e digite:

  1. importar pymysql . Se não houver erro, sua instalação está correta. Para verificação, escreva um script para conectar-se ao mysql com este formulário:

  2. # um script simples para conexão MySQL import pymysql db = pymysql.connect (host = "localhost", usuário = "root", passwd = "* ", db =" biblioteca ") #Claro, estas são informações para o meu db # feche a conexão db.close () *

Dê um nome a ele ("con.py", por exemplo) e salve-o na área de trabalho. No Terminal, digite "cd desktop" e, em seguida, $ python con.py Se não houver erro, você está conectado ao servidor MySQL. Boa sorte!

duke2909
fonte
0

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

Eu instalei o pip no meu windows 7, com o python 3.3 apenas o pip instala o cymysql

(você não precisa de cython) rápido e indolor

Lazik
fonte
0

Isso não responde totalmente à minha pergunta original, mas acho importante que todos saibam o que eu fiz e por quê.

Eu escolhi continuar usando o python 2.7 em vez do python 3 por causa da prevalência de 2.7 exemplos e módulos na web em geral.

Agora eu uso o mysqldb e o mysql.connector para conectar ao MySQL no Python 2.7. Ambos são ótimos e funcionam bem. Eu acho que o mysql.connector é, no final das contas, melhor a longo prazo.

panofish
fonte
Estou curioso para saber se você ainda está usando o Python 2.7. Em geral, acho que é realmente importante fazer a transição para o Python 3 e fiquei surpreso ao ver tantos programadores optando pelo Python 2.7 para novos projetos. Como as coisas funcionaram?
precisa
@ vy32 Acho que você ficará menos surpreso se os desenvolvedores escolherem o py27 se considerar que muitos sistemas operacionais de servidor não suportam diretamente o Python 3. O Red Hat Enterprise Linux ainda estava sendo empacotado com o Python 2.6 até a versão mais recente, e até mesmo apenas uma. tem py27.
Coredumperror
Outro motivo para usar o python 2.7 é porque o Maya (que suporta python) usa 2.7 internamente. BTW ... se você também precisa se conectar ao MySQL através de python no Maya ... use o conector mysql python puro.
precisa saber é o seguinte
0

Estou usando o cymysql com python3 em um raspberry pi Eu simplesmente instalei por: sudo pip3 install cython sudo pip3 instale o cymysql onde o cython não é necessário, mas deve tornar o cymysql mais rápido

Até agora, funciona como um encanto e muito semelhante ao MySQLdb

Jaco
fonte
0

Este é um tutorial rápido sobre como obter o Python 3.7 trabalhando com o Mysql.
Obrigado a todos de quem recebi respostas para minhas perguntas
- espero que isso ajude alguém algum dia.
-------------------------------------------------- -
Meu sistema:
Versão do Windows: Pro de 64 bits

REQUISITOS .. baixe e instale estes primeiro ...
1. Faça o download do Xampp ..
https://www.apachefriends.org/download.html
2. Faça o download do Python
https://www.python.org/downloads/windows/

- ------------
// MÉTODO
--------------
Instale o xampp primeiro após concluir a instalação - instale o Python 3.7.
Depois de instalar os dois - reinicie o sistema Windows.
Agora inicie o xampp e no painel de controle - inicie o servidor mysql.
Confirme as versões abrindo o CMD e no tipo de terminal

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.

Isso é para verificar a versão do 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

Isso é para verificar a versão do Python
Agora que ambos foram confirmados, digite o seguinte no CMD ...

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

Após a instalação do pymysql estar concluída.
crie um novo arquivo chamado "testconn.py" na área de trabalho ou em qualquer outro lugar para acesso rápido.
Abra este arquivo com sublime ou outro editor de texto e coloque-o nele.
Lembre-se de alterar as configurações para refletir seu banco de dados.

#!/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()

Agora no seu CMD - digite

c:\Desktop>testconn.py

E é isso ... você agora está totalmente conectado de um script python ao mysql ...
Aproveite ...

Kybrd
fonte
0

importar pymysql

conexão de banco de dados aberta

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

preparar um objeto cursor usando o método cursor ()

cursor = db.cursor ()

sql = "SELECT * FROM item"

cursor.execute (sql)

Busque todas as linhas em uma lista de listas.

resultados = cursor.fetchall () para a linha nos resultados: item_title = linha [1] comentário = linha [2] print ("O título dos itens é o seguinte =% s, os comentários são os seguintes =% s"% \ (item_title, Comente))

Amjad
fonte