A maioria das respostas aqui se concentra na instalação da biblioteca MySQLdb. Eu realmente sugeriria optar pelo MySQL Connector / Python fornecido pelo MySQL / Oracle, o que torna o processo muito mais simples: stackoverflow.com/questions/372885/…
Sr. Napik
8
O problema com o uso do Connector / Python da Oracle é que ele possui bugs sutis e outros problemas de integração. É fácil de instalar, mas quase impossível trabalhar para todos os casos de uso do mundo real que eu tentei. Por isso, eu sempre recomendo o MySQLdb.
Joe Joe
7
@ Mr.Napik eu estou usando pymysqlporque é Python livre puro de acordo com esta comparação .
precisa
Respostas:
1246
Conectando-se ao MYSQL com Python 2 em três etapas
1 - Configuração
Você deve instalar um driver MySQL antes de fazer qualquer coisa. Ao contrário do PHP, apenas o driver SQLite é instalado por padrão com o Python. O pacote mais usado para fazer isso é o MySQLdb, mas é difícil instalá-lo usando o easy_install. Observe que o MySQLdb suporta apenas Python 2.
Para usuários do Windows, você pode obter um exe do MySQLdb .
Para Linux, este é um pacote casual (python-mysqldb). (Você pode usar sudo apt-get install python-mysqldb(para distros baseados no debian), yum install MySQL-python(para rpm) ou dnf install python-mysql(para a distribuição moderna do fedora) na linha de comando para fazer o download.)
Após a instalação, reinicie. Isso não é obrigatório, mas me impedirá de responder 3 ou 4 outras perguntas neste post, se algo der errado. Então, por favor, reinicie.
Então é como usar qualquer outro pacote:
#!/usr/bin/pythonimportMySQLdb
db =MySQLdb.connect(host="localhost",# your host, usually localhost
user="john",# your username
passwd="megajonhy",# your password
db="jonhydb")# name of the data base# you must create a Cursor object. It will let# you execute all the queries you need
cur = db.cursor()# Use all the SQL you like
cur.execute("SELECT * FROM YOUR_TABLE_NAME")# print all the first cell of all the rowsfor row in cur.fetchall():print row[0]
db.close()
Claro, existem milhares de possibilidades e opções; este é um exemplo muito básico. Você terá que olhar para a documentação. Um bom ponto de partida .
3 - Uso mais avançado
Depois de saber como ele funciona, convém usar um ORM para evitar a gravação manual do SQL e manipular suas tabelas como se fossem objetos Python. O ORM mais famoso da comunidade Python é o SQLAlchemy .
Eu recomendo fortemente que você a use: sua vida será muito mais fácil.
Eu descobri recentemente outra jóia no mundo Python: peewee . É um ORM muito simples, muito fácil e rápido de configurar e usar. Faz o meu dia para pequenos projetos ou aplicativos independentes, onde o uso de grandes ferramentas como SQLAlchemy ou Django é um exagero:
import peewee
from peewee import*
db =MySQLDatabase('jonhydb', user='john', passwd='megajonhy')classBook(peewee.Model):
author = peewee.CharField()
title = peewee.TextField()classMeta:
database = db
Book.create_table()
book =Book(author="me", title='Peewee is cool')
book.save()for book inBook.filter(author="me"):print book.title
Este exemplo funciona imediatamente. Nada além de ter peewee ( pip install peewee) é necessário.
Que bom que você gosta de peewee !! Eu adicionei suporte ao MySQL, bem como alguma documentação sobre a integração com ele. Feliz hacking!
Coleifer # 31/11
14
Observe que, ao escrever isso, o MySQLdb não suporta o Python 3. A página do sourceforge diz "Suporte ao Python 3 em breve", mas não é atualizado desde 08/10/2012. Para o Python 3, existe o PyMySQL e o ourql .
paul
8
Observe também o seguinte:pip install MySQL-python
Ben Crowhurst
5
Esta resposta seria mais útil com um exemplo de conexão com um servidor externo em uma porta não padrão para mostrar como fazê-lo. Dizer localhost é a maneira usual de fazer isso é um absurdo.
Anthony
3
O Peewee alterou o comportamento padrão e não usa mais a confirmação automática por padrão. Até a situação do driver do DB mudou agora. A pergunta precisa ser atualizada, mas desde o abuso de edições em algumas das minhas respostas, não as edito mais.
e-satis
189
Aqui está uma maneira de fazer isso, usando o MySQLdb , que suporta apenas o Python 2:
#!/usr/bin/pythonimportMySQLdb# Connect
db =MySQLdb.connect(host="localhost",
user="appuser",
passwd="",
db="onco")
cursor = db.cursor()# Execute SQL select statement
cursor.execute("SELECT * FROM location")# Commit your changes if writing# In this case, we are only reading data# db.commit()# Get the number of rows in the resultset
numrows = cursor.rowcount
# Get and display one row at a timefor x in range(0, numrows):
row = cursor.fetchone()print row[0],"-->", row[1]# Close the connection
db.close()
é necessário confirmar neste exemplo, pois você não está modificando o banco de dados?
Sumanth232
3
Cuidado com o radar - este módulo não tem suporte fuso horário em conexão
kommradHomer
Não está funcionando na minha hospedagem compartilhada. Dizendo isso No module named MySQLdb. Como posso usar o mysql com python em hospedagem compartilhada. Alguma alternativa?
Bhavesh Gangani
@BhaveshGangani, você precisará entrar em contato com seu host e perguntar por que as bibliotecas Python suportam. Se eles suportarem pypi, você sempre poderá carregar o pacote quando sua implantação ocorrer.
George Stocker
1
Curiosamente, embora os médicos dizem isso só funciona com python 2, ele parece trabalhar com python 3 para mim
lucidbrot
122
O Oracle (MySQL) agora suporta um conector Python puro. Isso significa que não há binários para instalar: é apenas uma biblioteca Python. Chama-se "Connector / Python".
Sim, ele é. Além disso, é menos complicado que o MySQLdb e a API é melhor na minha opinião. Essa deve ser a resposta.
Anthony
1
usando o conector mysql oficial do python é a melhor maneira de ganhar tempo
Anas
2
@ J0hnG4lt Você pode simplesmente clicar em "Não, obrigado, basta iniciar o meu download" abaixo do formulário de login (o que realmente parece obrigatório, mas não é).
ComFreek
6
@ComFreek great. Como isso é melhor? Podemos parar de aplicar o "fluxo de trabalho do Windows". O gerenciamento de pacotes existe.
É um pacote (cerca de 110k), puro Python, por isso é independente do sistema e simples de instalar. Você acabou de baixar, clicar duas vezes, confirmar o contrato de licença e partir. Não há necessidade de Xcode, MacPorts, compilar, reiniciar…
Então você se conecta como:
import mysql.connector
cnx = mysql.connector.connect(user='scott', password='tiger',
host='127.0.0.1',
database='employees')try:
cursor = cnx.cursor()
cursor.execute("""
select 3 from your_table
""")
result = cursor.fetchall()print result
finally:
cnx.close()
Não é tão simples quanto você afirma. Quando tentei instalar o rpm, recebi alguns problemas de dependência (FileDigests e PayloadIsXz) do meu RPM: rpm -i mysql-connector-python-1.1.5-1.el6.noarch.rpmerror: Failed dependencies:rpmlib(FileDigests) <= 4.6.0-1 is needed by mysql-connector-python-1.1.5-1.el6.noarchrpmlib(PayloadIsXz) <= 5.2-1 is needed by mysql-connector-python-1.1.5-1.el6.noarch
tatlar
2
Eu preferia essa biblioteca, mas ela não é mais suportada oficialmente no PyPi. Desde então, mudei para o MySQLdb.
Steven Mercatante
2
@Arms: não é mais oficialmente suportado no PyPi? Você tem alguma fonte para isso?
Messa
7
pip install mysql-connector-pythontambém irá funcionar. Não vejo onde ele diz que não é mais suportado no PyPi? Ótimo se você não tem acesso aos compiladores gcc / C no seu sistema e, portanto, não pode instalar mysqldb.
Decvalts 07/08
7
a partir de 7 de novembro de 2016, o pacote para pip é apenas mysql-connector, pip search mysql-connectorpara encontrar o nome do pacote. Resposta daqui: stackoverflow.com/a/22829966/2048266
nommer
117
Pare de usar o MySQLDb se você deseja evitar a instalação de cabeçalhos mysql apenas para acessar o mysql a partir do python.
Use pymysql . Ele faz tudo o que o MySQLDb faz, mas foi implementado puramente em Python sem dependências externas . Isso torna o processo de instalação em todos os sistemas operacionais consistente e fácil. pymysqlé uma queda no substituto do MySQLDb e IMHO, não há razão para usar o MySQLDb para nada ... NUNCA! - PTSD from installing MySQLDb on Mac OSX and *Nix systems, mas sou só eu.
Instalação
pip install pymysql
É isso aí ... você está pronto para jogar.
Exemplo de uso do repositório pymysql Github
import pymysql.cursors
import pymysql
# Connect to the database
connection = pymysql.connect(host='localhost',
user='user',
password='passwd',
db='db',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)try:with connection.cursor()as cursor:# Create a new record
sql ="INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
cursor.execute(sql,('[email protected]','very-secret'))# connection is not autocommit by default. So you must commit to save# your changes.
connection.commit()with connection.cursor()as cursor:# Read a single record
sql ="SELECT `id`, `password` FROM `users` WHERE `email`=%s"
cursor.execute(sql,('[email protected]',))
result = cursor.fetchone()print(result)finally:
connection.close()
TAMBÉM - Substitua o MySQLdb no código existente de forma rápida e transparente
Se você possui um código existente que usa o MySQLdb, pode substituí-lo facilmente pelo pymysql usando este processo simples:
# import MySQLdb << Remove this line and replace with:import pymysql
pymysql.install_as_MySQLdb()
Todas as referências subseqüentes ao MySQLdb usarão o pymysql de forma transparente.
"Sempre" é um pouco forte ... O que há de errado com peewee ou sqlalchemy? Mesmo se eles existirem como bibliotecas ORM, ainda serão úteis
OneCricketeer
4
Não, eu não acho que seja forte. Dada a opção de usar o MySQLDb ou o PyMysql, acho que escolher o PyMysql é um acéfalo, porque é uma instalação simples do pip sem dependências, enquanto o MySQLDb exige que os arquivos de cabeçalho de desenvolvimento do mysql sejam instalados para a sua plataforma do sistema operacional para que ele funcione. Sqlalchemy não fator para isso porque ele ainda precisa envolver em torno de um módulo que pode conversar com mysql como PyMysql, mysqldb, CyMySQL etc Peewee olha que interessante, eu vou verificar isso
OkezieE
2
@ cricket_007 peewee e sqlalchemly não implementar o seu próprio conector db, que proporcionam uma camada de cima MySQLdb etc
rocksportrocker
25
Tente usar o MySQLdb . O MySQLdb suporta apenas Python 2.
Cuidado com o radar - este módulo não tem suporte fuso horário em conexão
kommradHomer
1
@kommradHomer Você pode elaborar, por favor?
Pyderman 17/02
1
@kommradHomer - o que o fuso horário suporta importa para você (ou para outras pessoas - principalmente quando se conecta localhost)?
warren 27/07
1
@warren Não, eu não estava se conectando localhost no meu caso
kommradHomer
1
Como detecto qual biblioteca está instalada para conectar-se a um banco de dados?
precisa saber é o seguinte
18
Como um driver de banco de dados, também existe o ourql . Algumas das razões listadas nesse link, que dizem por que o ourql é melhor:
oursql possui parametrização real, enviando o SQL e os dados para o MySQL completamente separadamente.
oursql permite que dados de texto ou binários sejam transmitidos para o banco de dados e transmitidos para fora do banco de dados, em vez de exigir que tudo seja armazenado em buffer no cliente.
o oursql pode inserir linhas preguiçosamente e buscar linhas preguiçosamente.
o ourql possui suporte unicode ativado por padrão.
O oursql suporta python 2.4 a 2.7 sem nenhum aviso de reprovação no 2.6+ (consulte o PEP 218) e sem falhar completamente no 2.7 (consulte o PEP 328).
oursql roda nativamente no python 3.x.
Então, como conectar-se ao mysql com o ourql?
Muito semelhante ao mysqldb:
import oursql
db_connection = oursql.connect(host='127.0.0.1',user='foo',passwd='foobar',db='db_name')
cur=db_connection.cursor()
cur.execute("SELECT * FROM `tbl_name`")for row in cur.fetchall():print row[0]
Eu não entendo o 'roda nativamente no python 3.x'. Eu apenas tentei instalá-lo e o setup.py é lançado porque ele nem usa chamadas de impressão compatíveis com Python 3. Parecia ótimo até que eu realmente tentei.
Otakucode
15
Execute este comando no seu terminal para instalar o conector mysql:
pip install mysql-connector-python
E execute isso no seu editor python para conectar-se ao MySQL:
Alguns caras já responderam sua pergunta lá. Você só esqueceu de executar mydb.commit()após a inserção de valores na tabela
Sherzod
13
SqlAlchemy
SQLAlchemy é o kit de ferramentas Python SQL e o Object Relational Mapper que fornece aos desenvolvedores de aplicativos todo o poder e flexibilidade do SQL. O SQLAlchemy fornece um conjunto completo de padrões de persistência de nível empresarial conhecidos, projetados para acesso eficiente e de alto desempenho ao banco de dados, adaptado a uma linguagem de domínio simples e Python.
Instalação
pip install sqlalchemy
Consulta RAW
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, scoped_session
engine = create_engine("mysql://<user_name>:<password>@<host_name>/<db_name>")
session_obj = sessionmaker(bind=engine)
session = scoped_session(session_obj)# insert into database
session.execute("insert into person values(2, 'random_name')")
session.flush()
session.commit()
Maneira ORM
from sqlalchemy importColumn,Integer,Stringfrom sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, scoped_session
Base= declarative_base()
engine = create_engine("mysql://<user_name>:<password>@<host_name>/<db_name>")
session_obj = sessionmaker(bind=engine)
session = scoped_session(session_obj)# Bind the engine to the metadata of the Base class so that the# declaratives can be accessed through a DBSession instanceBase.metadata.bind = engine
classPerson(Base):
__tablename__ ='person'# Here we define columns for the table person# Notice that each column is also a normal Python instance attribute.
id =Column(Integer, primary_key=True)
name =Column(String(250), nullable=False)# insert into database
person_obj =Person(id=12, name="name")
session.add(person_obj)
session.flush()
session.commit()
Apesar de todas as respostas acima, caso você não deseje se conectar a um banco de dados específico antecipadamente, por exemplo, se desejar criar o banco de dados ainda (!), Você pode usá-lo connection.select_db(database), conforme demonstrado a seguir.
import pymysql.cursors
connection = pymysql.connect(host='localhost',
user='mahdi',
password='mahdi',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
cursor = connection.cursor()
cursor.execute("CREATE DATABASE IF NOT EXISTS "+database)
connection.select_db(database)
sql_create ="CREATE TABLE IF NOT EXISTS "+tablename+(timestamp DATETIME NOT NULL PRIMARY KEY)"
cursor.execute(sql_create)
connection.commit()
cursor.close()
Embora alguns de vocês possam marcar isso como duplicado e ficarem chateados por eu estar copiando a resposta de outra pessoa, eu REALMENTE gostaria de destacar um aspecto da resposta do Sr. Napik. Por ter perdido isso, causei inatividade em sites de âmbito nacional (9min). Se apenas alguém compartilhasse essa informação, eu poderia ter evitado!
Aqui está o código dele:
import mysql.connector
cnx = mysql.connector.connect(user='scott', password='tiger',
host='127.0.0.1',
database='employees')try:
cursor = cnx.cursor()
cursor.execute("""select 3 from your_table""")
result = cursor.fetchall()print(result)finally:
cnx.close()
O importante aqui é a cláusula Try and Finalmente . Isso permite que as conexões SEMPRE sejam fechadas, independentemente do que acontece na parte do cursor / sqlstatement do código. Muitas conexões ativas fazem o DBLoadNoCPU disparar e podem travar um servidor db.
Espero que este aviso ajude a salvar servidores e, finalmente, empregos! : D
A melhor maneira de conectar-se ao MySQL a partir do python é Usar o MySQL Connector / Python, porque é o driver oficial do Oracle para o MySQL para trabalhar com o Python e funciona com o Python 3 e o Python 2.
siga as etapas mencionadas abaixo para conectar o MySQL
Use o connect()método do conector mysql python para conectar-se ao MySQL.pass o argumento necessário ao connect()método. ou seja, host, nome de usuário, senha e nome do banco de dados.
Crie um cursorobjeto a partir do objeto de conexão retornado pelo connect()método para executar consultas SQL.
feche a conexão após a conclusão do seu trabalho.
Exemplo :
import mysql.connector
from mysql.connector importErrortry:
conn = mysql.connector.connect(host='hostname',
database='db',
user='root',
password='passcode')if conn.is_connected():
cursor = conn.cursor()
cursor.execute("select database();")
record = cursor.fetchall()print("You're connected to - ", record)exceptErroras e :print("Print your error msg", e)finally:#closing database connection.if(conn.is_connected()):
cursor.close()
conn.close()
Para operações DML - use cursor.execute()e cursor.executemany()para executar a consulta. e após esse uso, connection.commit()para manter suas alterações no banco de dados
Para buscar dados - Use cursor.execute()para executar a consulta e cursor.fetchall(), cursor.fetchone(), cursor.fetchmany(SIZE)para buscar dados
Eu instalei o MySQL-python via yum install. A instalação foi concluída, mas não consigo importar o módulo MySQLdb. Ele diz que não existe esse módulo. Alguma idéia de por que é assim?
user3527975
Não está claro qual resposta você quer dizer quando diz "resposta acima". Faça sua resposta completa em si mesma. Se você quiser consultar outras respostas, faça o link para a resposta específica.
Flimm
5
O mysqlclient é o melhor, pois outros apenas fornecem suporte para versões específicas do python
pip install mysqlclient
código de exemplo
import mysql.connector
import _mysql
db=_mysql.connect("127.0.0.1","root","umer","sys")#db=_mysql.connect(host,user,password,db)# Example of how to insert new values:
db.query("""INSERT INTO table1 VALUES ('01', 'myname')""")
db.store_result()
db.query("SELECT * FROM new1.table1 ;")#new1 is scheme table1 is table mysql
res= db.store_result()for i in range(res.num_rows()):print(result.fetch_row())
+1 para propor a solução mais rápida para o python 3. No entanto, mysql.connectore _mysqlforneça um erro de importação (embora a segunda opção deva funcionar de acordo com a documentação). import MySQLdbfunciona, e entãoMySQLdb.connect...
Suzana
3
Também dê uma olhada no Storm . É uma ferramenta simples de mapeamento de SQL que permite editar e criar facilmente entradas de SQL sem escrever as consultas.
Aqui está um exemplo simples:
from storm.locals import*# User will be the mapped object; you have to create the table before mapping itclassUser(object):
__storm_table__ ="user"# table name
ID =Int(primary=True)#field ID
name=Unicode()# field name
database = create_database("mysql://root:password@localhost:3306/databaseName")
store =Store(database)
user =User()
user.name = u"Mark"print str(user.ID)# None
store.add(user)
store.flush()# ID is AUTO_INCREMENTprint str(user.ID)# 1 (ID)
store.commit()# commit all changes to the database
Para encontrar e usar objetos:
michael = store.find(User,User.name == u"Michael").one()print str(user.ID)# 10
#!/usr/bin/pythonimportMySQLdbtry:
db =MySQLdb.connect(host="localhost",# db server, can be a remote one
db="mydb"# database
user="mydb",# username
passwd="mydb123",# password for this username)# Create a Cursor object
cur = db.cursor()# Create a query string. It can contain variables
query_string ="SELECT * FROM MY_TABLE"# Execute the query
cur.execute(query_string)# Get all the rows present the databasefor each_row in cur.fetchall():print each_row
# Close the connection
db.close()exceptException, e:print'Error ', e
A pergunta era um pouco ampla demais, mas essa resposta parece um pouco estreita (pelo menos no sentido de que instalar e importar um módulo por si só não funciona). Também parece haver shell e python misturados em um único bloco de código sem nenhuma explicação ou dicas sobre o que vai aonde e faz o que.
pymysql
porque é Python livre puro de acordo com esta comparação .Respostas:
Conectando-se ao MYSQL com Python 2 em três etapas
1 - Configuração
Você deve instalar um driver MySQL antes de fazer qualquer coisa. Ao contrário do PHP, apenas o driver SQLite é instalado por padrão com o Python. O pacote mais usado para fazer isso é o MySQLdb, mas é difícil instalá-lo usando o easy_install. Observe que o MySQLdb suporta apenas Python 2.
Para usuários do Windows, você pode obter um exe do MySQLdb .
Para Linux, este é um pacote casual (python-mysqldb). (Você pode usar
sudo apt-get install python-mysqldb
(para distros baseados no debian),yum install MySQL-python
(para rpm) oudnf install python-mysql
(para a distribuição moderna do fedora) na linha de comando para fazer o download.)No Mac, você pode instalar o MySQLdb usando o Macport .
2 - Uso
Após a instalação, reinicie. Isso não é obrigatório, mas me impedirá de responder 3 ou 4 outras perguntas neste post, se algo der errado. Então, por favor, reinicie.
Então é como usar qualquer outro pacote:
Claro, existem milhares de possibilidades e opções; este é um exemplo muito básico. Você terá que olhar para a documentação. Um bom ponto de partida .
3 - Uso mais avançado
Depois de saber como ele funciona, convém usar um ORM para evitar a gravação manual do SQL e manipular suas tabelas como se fossem objetos Python. O ORM mais famoso da comunidade Python é o SQLAlchemy .
Eu recomendo fortemente que você a use: sua vida será muito mais fácil.
Eu descobri recentemente outra jóia no mundo Python: peewee . É um ORM muito simples, muito fácil e rápido de configurar e usar. Faz o meu dia para pequenos projetos ou aplicativos independentes, onde o uso de grandes ferramentas como SQLAlchemy ou Django é um exagero:
Este exemplo funciona imediatamente. Nada além de ter peewee (
pip install peewee
) é necessário.fonte
pip install MySQL-python
Aqui está uma maneira de fazer isso, usando o MySQLdb , que suporta apenas o Python 2:
Referência aqui
fonte
No module named MySQLdb
. Como posso usar o mysql com python em hospedagem compartilhada. Alguma alternativa?O Oracle (MySQL) agora suporta um conector Python puro. Isso significa que não há binários para instalar: é apenas uma biblioteca Python. Chama-se "Connector / Python".
http://dev.mysql.com/downloads/connector/python/
fonte
Se você não precisa do MySQLdb, mas aceita qualquer biblioteca, eu recomendaria muito, muito, o MySQL Connector / Python do MySQL: http://dev.mysql.com/downloads/connector/python/ .
É um pacote (cerca de 110k), puro Python, por isso é independente do sistema e simples de instalar. Você acabou de baixar, clicar duas vezes, confirmar o contrato de licença e partir. Não há necessidade de Xcode, MacPorts, compilar, reiniciar…
Então você se conecta como:
fonte
rpm -i mysql-connector-python-1.1.5-1.el6.noarch.rpm
error: Failed dependencies:
rpmlib(FileDigests) <= 4.6.0-1 is needed by mysql-connector-python-1.1.5-1.el6.noarch
rpmlib(PayloadIsXz) <= 5.2-1 is needed by mysql-connector-python-1.1.5-1.el6.noarch
pip install mysql-connector-python
também irá funcionar. Não vejo onde ele diz que não é mais suportado no PyPi? Ótimo se você não tem acesso aos compiladores gcc / C no seu sistema e, portanto, não pode instalarmysqldb
.pip search mysql-connector
para encontrar o nome do pacote. Resposta daqui: stackoverflow.com/a/22829966/2048266Use pymysql . Ele faz tudo o que o MySQLDb faz, mas foi implementado puramente em Python sem dependências externas . Isso torna o processo de instalação em todos os sistemas operacionais consistente e fácil.
pymysql
é uma queda no substituto do MySQLDb e IMHO, não há razão para usar o MySQLDb para nada ... NUNCA! -PTSD from installing MySQLDb on Mac OSX and *Nix systems
, mas sou só eu.Instalação
pip install pymysql
Exemplo de uso do repositório pymysql Github
Se você possui um código existente que usa o MySQLdb, pode substituí-lo facilmente pelo pymysql usando este processo simples:
Todas as referências subseqüentes ao MySQLdb usarão o pymysql de forma transparente.
fonte
Tente usar o MySQLdb . O MySQLdb suporta apenas Python 2.
Há uma página de instruções aqui: http://www.kitebird.com/articles/pydbapi.html
Na página:
fonte
localhost
)?Como um driver de banco de dados, também existe o ourql . Algumas das razões listadas nesse link, que dizem por que o ourql é melhor:
Então, como conectar-se ao mysql com o ourql?
Muito semelhante ao mysqldb:
O tutorial na documentação é bastante decente.
E, claro, para ORM SQLAlchemy é uma boa escolha, como já mencionado nas outras respostas.
fonte
Execute este comando no seu terminal para instalar o conector mysql:
E execute isso no seu editor python para conectar-se ao MySQL:
Exemplos para executar comandos do MySQL (no seu python edior):
Para mais comandos: https://www.w3schools.com/python/python_mysql_getstarted.asp
fonte
mysql-connector
apenas. stackoverflow.com/questions/59405740/…mydb.commit()
após a inserção de valores na tabelaSqlAlchemy
Instalação
Consulta RAW
Maneira ORM
fonte
Apesar de todas as respostas acima, caso você não deseje se conectar a um banco de dados específico antecipadamente, por exemplo, se desejar criar o banco de dados ainda (!), Você pode usá-lo
connection.select_db(database)
, conforme demonstrado a seguir.fonte
O MySQLdb é o caminho direto. Você pode executar consultas SQL através de uma conexão. Período.
Minha maneira preferida, que também é pitônica, é usar o poderoso SQLAlchemy . Aqui está um tutorial relacionado à consulta e um tutorial sobre os recursos ORM do SQLALchemy.
fonte
para Python3.6 eu encontrei dois drivers: pymysql e mysqlclient. Testei o desempenho entre eles e obtive o resultado: o mysqlclient é mais rápido.
abaixo está o meu processo de teste (preciso instalar o python lib profilehooks para analisar o tempo decorrido :
sql bruto:
select * from FOO;
execute imediatamente no terminal mysql:
46410 rows in set (0.10 sec)
pymysql (2.4s):
aqui está o perfil do pymysql:
mysqlclient (0.4s)
aqui está o perfil do mysqlclient:
Então, parece que o mysqlclient é muito mais rápido que o pymysql
fonte
Embora alguns de vocês possam marcar isso como duplicado e ficarem chateados por eu estar copiando a resposta de outra pessoa, eu REALMENTE gostaria de destacar um aspecto da resposta do Sr. Napik. Por ter perdido isso, causei inatividade em sites de âmbito nacional (9min). Se apenas alguém compartilhasse essa informação, eu poderia ter evitado!
Aqui está o código dele:
O importante aqui é a cláusula Try and Finalmente . Isso permite que as conexões SEMPRE sejam fechadas, independentemente do que acontece na parte do cursor / sqlstatement do código. Muitas conexões ativas fazem o DBLoadNoCPU disparar e podem travar um servidor db.
Espero que este aviso ajude a salvar servidores e, finalmente, empregos! : D
fonte
A melhor maneira de conectar-se ao MySQL a partir do python é Usar o MySQL Connector / Python, porque é o driver oficial do Oracle para o MySQL para trabalhar com o Python e funciona com o Python 3 e o Python 2.
siga as etapas mencionadas abaixo para conectar o MySQL
instalar o conector usando pip
pip install mysql-connector-python
ou você pode baixar o instalador em https://dev.mysql.com/downloads/connector/python/
Use o
connect()
método do conector mysql python para conectar-se ao MySQL.pass o argumento necessário aoconnect()
método. ou seja, host, nome de usuário, senha e nome do banco de dados.Crie um
cursor
objeto a partir do objeto de conexão retornado peloconnect()
método para executar consultas SQL.feche a conexão após a conclusão do seu trabalho.
Exemplo :
Referência - https://pynative.com/python-mysql-database-connection/
API importante do MySQL Connector Python
Para operações DML - use
cursor.execute()
ecursor.executemany()
para executar a consulta. e após esse uso,connection.commit()
para manter suas alterações no banco de dadosPara buscar dados - Use
cursor.execute()
para executar a consulta ecursor.fetchall()
,cursor.fetchone()
,cursor.fetchmany(SIZE)
para buscar dadosfonte
Apenas uma modificação na resposta acima. Simplesmente execute este comando para instalar o mysql for python
lembrar! É sensível a maiúsculas e minúsculas.
fonte
O mysqlclient é o melhor, pois outros apenas fornecem suporte para versões específicas do python
código de exemplo
consulte https://github.com/PyMySQL/mysqlclient-python
fonte
mysql.connector
e_mysql
forneça um erro de importação (embora a segunda opção deva funcionar de acordo com a documentação).import MySQLdb
funciona, e entãoMySQLdb.connect...
Também dê uma olhada no Storm . É uma ferramenta simples de mapeamento de SQL que permite editar e criar facilmente entradas de SQL sem escrever as consultas.
Aqui está um exemplo simples:
Para encontrar e usar objetos:
Encontre com chave primária:
Para mais informações, consulte o tutorial .
fonte
Esta é a conexão do banco de dados Mysql
fonte
primeiro instale o driver
Então, um código básico é assim:
fonte
você pode conectar seu código python ao mysql dessa maneira.
fonte
Primeiro instale o driver (Ubuntu)
O sudo apt-get instala o python-pip
instalação do sudo pip -U pip
sudo apt-get install python-dev libmysqlclient-dev
sudo apt-get instala MySQL-python
Códigos de conexão do banco de dados MySQL
fonte
Para python 3.3
CyMySQL https://github.com/nakagami/CyMySQL
Eu tenho o pip instalado no meu windows 7, apenas o pip instala o cymysql
(você não precisa de cython) rápido e indolor
fonte
Primeiro, instale o conector python-mysql em https://dev.mysql.com/downloads/connector/python/
no console Python, digite:
fonte