Como eu me conecto a um banco de dados MySQL em Python?


1163

Como eu me conecto a um banco de dados MySQL usando um programa python?


44
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.)

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:

#!/usr/bin/python
import MySQLdb

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 rows
for 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')

class Book(peewee.Model):
    author = peewee.CharField()
    title = peewee.TextField()

    class Meta:
        database = db

Book.create_table()
book = Book(author="me", title='Peewee is cool')
book.save()
for book in Book.filter(author="me"):
    print book.title

Este exemplo funciona imediatamente. Nada além de ter peewee ( pip install peewee) é necessário.


46
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/python
import MySQLdb

# 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 time
for x in range(0, numrows):
    row = cursor.fetchone()
    print row[0], "-->", row[1]

# Close the connection
db.close()

Referência aqui


4
é 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".

http://dev.mysql.com/downloads/connector/python/


1
isso é mais rápido do que usar o mysqldb?
Alwbtc

8
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.
J0hnG4lt

120

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:

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

2
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.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
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, ('webmaster@python.org', '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, ('webmaster@python.org',))
        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.


3
"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.

Há uma página de instruções aqui: http://www.kitebird.com/articles/pydbapi.html


Na página:

# server_version.py - retrieve and display database server version

import MySQLdb

conn = MySQLdb.connect (host = "localhost",
                        user = "testuser",
                        passwd = "testpass",
                        db = "test")
cursor = conn.cursor ()
cursor.execute ("SELECT VERSION()")
row = cursor.fetchone ()
print "server version:", row[0]
cursor.close ()
conn.close ()

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]

O tutorial na documentação é bastante decente.

E, claro, para ORM SQLAlchemy é uma boa escolha, como já mencionado nas outras respostas.


4
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:

import mysql.connector

mydb = mysql.connector.connect(
      host="localhost",
      user="yusername",
      passwd="password",
      database="database_name"
)

Exemplos para executar comandos do MySQL (no seu python edior):

mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))")    
mycursor.execute("SHOW TABLES")

mycursor.execute("INSERT INTO customers (name, address) VALUES ('John', 'Highway 21')")    
mydb.commit() # Use this command after insert or update

Para mais comandos: https://www.w3schools.com/python/python_mysql_getstarted.asp


Você pode responder isso ?? Está relacionado mysql-connectorapenas. stackoverflow.com/questions/59405740/…

1
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 import Column, Integer, String
from 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 instance
Base.metadata.bind = engine

class Person(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()

11

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

8

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.


1
Os links estão inoperantes, você pode analisar e atualizá-lo com o link correto?
Naveen Vijay

6

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

from profilehooks import profile
import pymysql.cursors
import pymysql
connection = pymysql.connect(host='localhost', user='root', db='foo')
c = connection.cursor()

@profile(immediate=True)
def read_by_pymysql():
    c.execute("select * from FOO;")
    res = c.fetchall()

read_by_pymysql()

aqui está o perfil do pymysql: insira a descrição da imagem aqui


mysqlclient (0.4s)

from profilehooks import profile
import MySQLdb

connection = MySQLdb.connect(host='localhost', user='root', db='foo')
c = connection.cursor()

@profile(immediate=True)
def read_by_mysqlclient():
    c.execute("select * from FOO;")
    res = c.fetchall()

read_by_mysqlclient()

aqui está o perfil do mysqlclient: insira a descrição da imagem aqui

Então, parece que o mysqlclient é muito mais rápido que o pymysql


6

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


6

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

  1. instalar o conector usando pip

    pip install mysql-connector-python

ou você pode baixar o instalador em https://dev.mysql.com/downloads/connector/python/

  1. 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.

  2. Crie um cursorobjeto a partir do objeto de conexão retornado pelo connect()método para executar consultas SQL.

  3. feche a conexão após a conclusão do seu trabalho.

Exemplo :

import mysql.connector
 from mysql.connector import Error
 try:
     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)
 except Error as e :
    print ("Print your error msg", e)
 finally:
    #closing database connection.
    if(conn.is_connected()):
       cursor.close()
       conn.close()

Referência - https://pynative.com/python-mysql-database-connection/

API importante do MySQL Connector Python

  • 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


Você está * conectado a ...
John Forbes

5

Apenas uma modificação na resposta acima. Simplesmente execute este comando para instalar o mysql for python

sudo yum install MySQL-python
sudo apt-get install MySQL-python

lembrar! É sensível a maiúsculas e minúsculas.


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

consulte https://github.com/PyMySQL/mysqlclient-python


+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 it
class User(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_INCREMENT

print 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

Encontre com chave primária:

print store.get(User, 1).name #Mark

Para mais informações, consulte o tutorial .


2

Esta é a conexão do banco de dados Mysql

from flask import Flask, render_template, request
from flask_mysqldb import MySQL

app = Flask(__name__)


app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = 'root'
app.config['MYSQL_DB'] = 'MyDB'

mysql = MySQL(app)


@app.route('/', methods=['GET', 'POST']) 
def index():
    if request.method == "POST":
        details = request.form
        cur = mysql.connection.cursor()
        cur.execute ("_Your query_")
        mysql.connection.commit()
        cur.close()
        return 'success'
    return render_template('index.html')


if __name__ == '__main__':
    app.run()

1

primeiro instale o driver

pip install MySQL-python   

Então, um código básico é assim:

#!/usr/bin/python
import MySQLdb

try:
    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 database
    for each_row in cur.fetchall():
        print each_row

    # Close the connection
    db.close()
except Exception, e:
    print 'Error ', e 

1

você pode conectar seu código python ao mysql dessa maneira.

import MySQLdb
db = MySQLdb.connect(host="localhost",
                 user="appuser",
                 passwd="",
                 db="onco")

cursor = db.cursor()

1

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

import MySQLdb
conn = MySQLdb.connect (host = "localhost",user = "root",passwd = "pass",db = "dbname")
cursor = conn.cursor ()
cursor.execute ("SELECT VERSION()")
row = cursor.fetchone ()
print "server version:", row[0]
cursor.close ()
conn.close ()


-1

Primeiro, instale o conector python-mysql em https://dev.mysql.com/downloads/connector/python/

no console Python, digite:

pip install mysql-connector-python-rf
import mysql.connector

1
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.
Ondrej K.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.