¿Cómo me conecto a una base de datos MySQL en Python?

¿Cómo me conecto a una base de datos MySQL usando un programa Python?

preguntado el 16 de diciembre de 08 a las 19:12

La mayoría de las respuestas aquí se enfocan en instalar la biblioteca MySQLdb, realmente sugeriría optar por MySQL Connector / Python proporcionado por MySQL / Oracle, lo que hace que el proceso sea mucho más simple: stackoverflow.com/questions/372885/… -

El problema con el uso de Connector / Python de Oracle es que tiene errores sutiles y otros problemas de integración. Es fácil de instalar, pero casi imposible ponerse a trabajar para todos los casos de uso del mundo real en los que lo he probado. Por eso siempre recomiendo MySQLdb. -

@ Mr.Napik estoy usando pymysql porque es Python puro y gratuito según esta comparación. -

26 Respuestas

Conectarse a MYSQL con Python 2 en tres pasos

1 - Configuración

Debe instalar un controlador MySQL antes de hacer nada. A diferencia de PHP, solo el controlador SQLite se instala de forma predeterminada con Python. El paquete más utilizado para hacerlo es MySQLdb pero es difícil instalarlo usando easy_install. Tenga en cuenta que MySQLdb solo es compatible con Python 2.

Para usuarios de Windows, puede obtener un exe de MySQLdb.

Para Linux, este es un paquete casual (python-mysqldb). (Puedes usar sudo apt-get install python-mysqldb (para distribuciones basadas en Debian), yum install MySQL-python (para basado en rpm), o dnf install python-mysql (para la distribución moderna de fedora) en la línea de comandos para descargar).

Para Mac, puedes instalar MySQLdb usando Macport.

2 - Uso

Después de la instalación, reinicie. Esto no es obligatorio, pero evitará que responda otras 3 o 4 preguntas en esta publicación si algo sale mal. Así que por favor reinicie.

Entonces es como usar cualquier otro paquete:

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

Por supuesto, hay miles de posibilidades y opciones; este es un ejemplo muy básico. Tendrás que mirar la documentación. Un buen punto de partida.

3 - Uso más avanzado

Una vez que sepa cómo funciona, es posible que desee utilizar un ORM para evitar escribir SQL manualmente y manipular sus tablas como si fueran objetos de Python. El ORM más famoso de la comunidad de Python es SQLAlchemy.

Te recomiendo encarecidamente que lo uses: tu vida será mucho más fácil.

Recientemente descubrí otra joya en el mundo de Python: pipí. Es un ORM muy ligero, realmente fácil y rápido de configurar y luego usar. Me alegra el día para proyectos pequeños o aplicaciones independientes, donde usar grandes herramientas como SQLAlchemy o Django es excesivo:

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 ejemplo funciona fuera de la caja. Nada más que tener pipípip install peewee) es requerido.

Respondido 18 Abr '19, 10:04

¡Me alegro de que te guste el pipí! Agregué soporte para MySQL y algunos documentación al integrarse con él. ¡Feliz piratería! - coleífero

Tenga en cuenta que, al momento de escribir esto, MySQLdb no es compatible con Python 3. La página de sourceforge dice "Próximamente compatibilidad con Python 3", pero no se ha actualizado desde 2012-10-08. Para Python 3 hay PyMySQL y ourql. - paul

También tenga en cuenta que se requiere lo siguiente: pip install MySQL-python - Ben Crowhurst

Esta respuesta sería más útil con una conexión de ejemplo a un servidor externo en un puerto no estándar para mostrar cómo hacerlo. Decir que localhost es la forma habitual de hacerlo es una tontería. - Antonio

Peewee ha cambiado el comportamiento predeterminado y ya no usa el compromiso automático por defecto. Incluso la situación del controlador DB ha cambiado ahora. La pregunta debe actualizarse, pero debido al abuso de las ediciones en algunas de mis respuestas, ya no las edito. - e-satis

Aquí hay una forma de hacerlo, usando MySQLdb, que solo es compatible con 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()

Referencia aquí

Respondido 18 Abr '19, 10:04

¿Es necesario confirmar en este ejemplo ya que no está modificando la base de datos? - sumanth232

CUIDADO - este módulo no tiene soporte de zona horaria en la conexión - kommradHomer

No funciona en mi alojamiento compartido. Diciendo que No module named MySQLdb. ¿Cómo puedo usar mysql con python en alojamiento compartido? ¿Alguna alternativa? - Bhavesh G

@BhaveshGangani, deberá ponerse en contacto con su anfitrión y preguntar por qué admiten las bibliotecas de Python. Si son compatibles con pypi, siempre puede cargar el paquete cuando suceda la implementación. - Jorge Stocker

Curiosamente, aunque los documentos dicen que esto solo funciona con python 2, parece funcionar con python 3 para mí. Lucidbrot

Si no necesita MySQLdb, pero aceptaría cualquier biblioteca, recomendaría muchísimo MySQL Connector / Python de MySQL: http://dev.mysql.com/downloads/connector/python/.

Es un paquete (alrededor de 110k), Python puro, por lo que es independiente del sistema y muy fácil de instalar. Simplemente descargue, haga doble clic, confirme el acuerdo de licencia y listo. No es necesario Xcode, MacPorts, compilar, reiniciar ...

Entonces te conectas 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()

Respondido el 05 de diciembre de 14 a las 00:12

No es tan simple como afirmas. Cuando intenté instalar el rpm, obtuve un par de problemas de dependencia (FileDigests y PayloadIsXz) de mi 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

Solía ​​preferir esta biblioteca, pero ya no es compatible oficialmente con PyPi. Desde entonces me mudé a MySQLdb. - Steven Mercatante

@Arms: ¿ya no es compatible oficialmente con PyPi? ¿Tiene alguna fuente para esto? - Masa

pip install mysql-connector-python también funcionará. No veo dónde dice que ya no es compatible con PyPi. Genial si no tiene acceso a los compiladores gcc / C en su sistema y, por lo tanto, no puede instalar mysqldb. - decvaltas

a partir del 7 de noviembre de 2016, el paquete para pip es solo mysql-connector, pip search mysql-connector para encontrar el nombre del paquete. responde desde aquí: stackoverflow.com/a/22829966/2048266 - nommer

Oracle (MySQL) ahora admite un conector Python puro. Eso significa que no hay binarios para instalar: es solo una biblioteca de Python. Se llama "Conector / Python".

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

contestado el 28 de mayo de 13 a las 16:05

¿Es esto más rápido que usar mysqldb? - alwbtc

Sí lo es. Además, es menos complicado que MySQLdb y, en mi opinión, la API es mejor. Esta debería ser la respuesta. - Antonio

usar el conector mysql oficial de python es la mejor manera de ganar tiempo - Anas

@ J0hnG4lt Puede hacer clic en "No, gracias, simplemente comience mi descarga" debajo del formulario de inicio de sesión (que en realidad parece obligatorio, pero no lo es). - ComFreek

@ComFreek genial. ¿Cómo es eso mejor? ¿Podemos dejar de aplicar el "flujo de trabajo de Windows"? Existe la gestión de paquetes. - J0hnG4lt

Deje de usar MySQLDb si desea evitar la instalación de encabezados mysql solo para acceder a mysql desde python.

Utiliza pymysql. Hace todo lo que hace MySQLDb, pero se implementó puramente en Python con SIN dependencias externas. Esto hace que el proceso de instalación en todos los sistemas operativos sea consistente y fácil. pymysql es un reemplazo directo para MySQLDb y, en mi humilde opinión, no hay razón para usar MySQLDb para nada ... ¡NUNCA! - PTSD from installing MySQLDb on Mac OSX and *Nix systems, pero ese soy solo yo.

INSTALACIÓN

pip install pymysql

Eso es todo ... estás listo para jugar.

Ejemplo de uso del repositorio de 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()

TAMBIÉN: reemplace MySQLdb en el código existente de forma rápida y transparente

Si tiene un código existente que usa MySQLdb, puede reemplazarlo fácilmente con pymysql usando este simple proceso:

# import MySQLdb << Remove this line and replace with:
import pymysql
pymysql.install_as_MySQLdb()

Todas las referencias posteriores a MySQLdb utilizarán pymysql de forma transparente.

Respondido el 08 de Septiembre de 17 a las 20:09

"Siempre" es un poco fuerte ... ¿Qué hay de malo con peewee o sqlalchemy? Incluso si existen como bibliotecas ORM, siguen siendo igual de útiles: unjugador de críquet

No, no creo que sea fuerte en absoluto. Dada la opción de usar MySQLDb o PyMysql, creo que elegir PyMysql es una obviedad porque es una instalación pip simple sin dependencias, mientras que MySQLDb requiere que se instalen archivos de encabezado de desarrollo mysql para que su plataforma de sistema operativo funcione. Sqlalchemy no tiene en cuenta esto porque todavía necesita envolver un módulo que pueda hablar con mysql como PyMysql, MySQLDb, CyMySQL, etc. Sin embargo, Peewee parece interesante, lo comprobaré - OkezieE

@ cricket_007 peewee y sqlalchemly no implementan su propio conector de base de datos, proporcionan una capa por encima de MySQLdb, etc. rockportrocker

Recibo este error cuando intento conectarme a AWS RDS mariadb usando pymysql. OperationalError: (1045, "Access denied for user 'admin'@'pool-96-107-103.bstnma.fios.verizon.net' (using password: YES)") - Murtaza Haji

@MurtazaHaji obtendrá ese error con cualquier cliente mysql si ingresa credenciales incorrectas. Verifique sus credenciales. - OkezieE

Intenta usar MySQLdb. MySQLdb solo es compatible con Python 2.

Hay una página de cómo acceder aquí: http://www.kitebird.com/articles/pydbapi.html


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

Respondido 18 Abr '19, 10:04

CUIDADO - este módulo no tiene soporte de zona horaria en la conexión - kommradHomer

@kommradHomer ¿Puede darme más detalles, por favor? - Pyderman

@kommradHomer: ¿qué es lo que le importa a usted (u otros, especialmente cuando se conecta a localhost)? - madriguera

@warren no, no estaba conectando localhost en mi caso - kommradHomer

¿Cómo detecto qué biblioteca está instalada para conectarme a una base de datos? - posfan12

Como controlador de base de datos, también hay ourql. Algunas de las razones enumeradas en ese enlace, que dicen por qué ourql es mejor:

  • ourql tiene parametrización real, enviando el SQL y los datos a MySQL completamente por separado.
  • ourql permite que los datos de texto o binarios se transmitan a la base de datos y se transmitan fuera de la base de datos, en lugar de requerir que todo se almacene en el búfer del cliente.
  • ourql puede insertar filas de forma perezosa y recuperar filas de forma perezosa.
  • ourql tiene el soporte Unicode activado de forma predeterminada.
  • ourql admite python 2.4 a 2.7 sin ninguna advertencia de obsolescencia en 2.6+ (ver PEP 218) y sin fallar completamente en 2.7 (ver PEP 328).
  • ourql se ejecuta de forma nativa en python 3.x.

Entonces, ¿cómo conectarse a mysql con ourql?

Muy similar a 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]

El sistema tutorial en la documentación es bastante decente.

Y, por supuesto, para ORM SQLAlchemy es una buena opción, como ya se mencionó en las otras respuestas.

Respondido 15 Oct 12, 22:10

No entiendo que 'se ejecuta de forma nativa en python 3.x'. Intenté instalarlo y setup.py explotó porque ni siquiera usa llamadas de impresión compatibles con Python 3. Sonaba genial hasta que lo probé. - código otaku

Ejecute este comando en su terminal para instalar el conector mysql:

pip install mysql-connector-python

Y ejecute esto en su editor de Python para conectarse a MySQL:

import mysql.connector

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

Muestras para ejecutar comandos MySQL (en su 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 más comandos: https://www.w3schools.com/python/python_mysql_getstarted.asp

Respondido el 06 de diciembre de 19 a las 15:12

¿Puedes contestar esto? Está relacionado con mysql-connector solamente. stackoverflow.com/questions/59405740/… - usuario11363434

Algunos chicos ya respondieron tu pregunta allí. Te olvidaste de correr mydb.commit() después de insertar valores en la tabla - Scott

Alquimia Sql


SQLAlchemy es el conjunto de herramientas Python SQL y Object Relational Mapper que brinda a los desarrolladores de aplicaciones todo el poder y la flexibilidad de SQL. SQLAlchemy proporciona un conjunto completo de patrones de persistencia de nivel empresarial bien conocidos, diseñados para un acceso a bases de datos eficiente y de alto rendimiento, adaptados a un lenguaje de dominio simple y Pythonic.

INSTALACIÓN

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

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

Respondido 06 Oct 18, 17:10

A pesar de todas las respuestas anteriores, en caso de que no desee conectarse a una base de datos específica por adelantado, por ejemplo, si aún desea crear la base de datos (!), Puede usar connection.select_db(database), como se demuestra a continuación.

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

Respondido el 22 de junio de 16 a las 15:06

La mejor manera de conectarse a MySQL desde python es usar MySQL Connector / Python porque es el controlador oficial de Oracle para MySQL para trabajar con Python y funciona tanto con Python 3 como con Python 2.

siga los pasos que se mencionan a continuación para conectar MySQL

  1. instalar conector usando pip

    pip install mysql-connector-python

o puede descargar el instalador desde https://dev.mysql.com/downloads/connector/python/

  1. Utiliza connect() método de python conector mysql para conectarse a MySQL.pass el argumento requerido para connect() método. es decir, host, nombre de usuario, contraseña y nombre de la base de datos.

  2. Crean cursor objeto del objeto de conexión devuelto por connect()método para ejecutar consultas SQL.

  3. cierre la conexión después de que termine su trabajo.

Ejemplo:

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

Referencia - https://pynative.com/python-mysql-database-connection/

API importante de MySQL Connector Python

  • Para operaciones DML: utilice cursor.execute() y cursor.executemany() para ejecutar la consulta. y despues de este uso connection.commit() para persistir sus cambios en la base de datos

  • Para recuperar datos: utilice cursor.execute() para ejecutar la consulta y cursor.fetchall(), cursor.fetchone(), cursor.fetchmany(SIZE) buscar datos

respondido 18 mar '20, 05:03

Aunque algunos de ustedes puedan marcar esto como un duplicado y se enojen porque estoy copiando la respuesta de otra persona, yo REALMENTE quisiera resaltar un aspecto de la respuesta del Sr. Napik. Debido a que me perdí esto, causé un tiempo de inactividad del sitio web en todo el país (9 minutos). ¡Si tan solo alguien hubiera compartido esta información, podría haberlo evitado!

Aquí está su código:

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

Lo importante aquí es el Trata y Finalmente cláusula. Esto permite conexiones a SIEMPRE estar cerrado, independientemente de lo que suceda en la parte cursor / sqlstatement del código. Muchas conexiones activas hacen que DBLoadNoCPU aumente y podría bloquear un servidor de base de datos.

¡Espero que esta advertencia ayude a salvar servidores y, en última instancia, trabajos! :D

Respondido 28 Feb 20, 15:02

MySQLdb es la forma más sencilla. Puede ejecutar consultas SQL a través de una conexión. Período.

Mi forma preferida, que también es pitónica, es usar el poderoso SQLAlchemy en lugar de. Aquí hay un relacionada con la consulta tutorial, y aquí hay un tutorial sobre Capacidades de ORM de SQLALchemy.

Respondido el 16 de diciembre de 08 a las 22:12

Los enlaces están inactivos, ¿puede investigarlo y actualizarlo con el enlace correcto? - naveen vijay

Lo sentimos, sus dos últimos enlaces aún están inactivos en junio de 2020. - joe_evans

para Python3.6 encontré dos controladores: pymysql y mysqlclient. Probé el rendimiento entre ellos y obtuve el resultado: mysqlclient es más rápido.

A continuación se muestra mi proceso de prueba (es necesario instalar python lib profilehooks para analizar el tiempo transcurrido:

sql sin procesar: select * from FOO;

ejecutar inmediatamente en la terminal mysql: 46410 rows in set (0.10 sec)

pymysql (2.4 s):

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

aquí está el perfil de pymysql: enter image description here


mysqlclient (0.4 s)

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

aquí está el perfil de mysqlclient: enter image description here

Entonces, parece que mysqlclient es mucho más rápido que pymysql

Respondido 18 ago 18, 15:08

mysqlclient es el mejor ya que otros solo brindan soporte para versiones específicas de python

 pip install mysqlclient

código de ejemplo

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

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

Respondido el 28 de enero de 18 a las 14:01

+1 por proponer la solución más rápida para Python 3. Sin embargo, mysql.connector y _mysql dar a ambos un error de importación (aunque la segunda opción debería funcionar de acuerdo con la documentación). import MySQLdb funciona, y luego MySQLdb.connect... - Suzana

Solo una modificación en la respuesta anterior. Simplemente ejecute este comando para instalar mysql para python

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

¡recuerda! Es sensible a mayúsculas y minúsculas.

Respondido el 21 de Septiembre de 15 a las 05:09

Instalé MySQL-python a través de yum install. La instalación se completó pero no puedo importar el módulo MySQLdb. Dice que no hay tal módulo. ¿Alguna idea de por qué es así? - user3527975

No está claro a qué respuesta te refieres cuando dices "respuesta anterior". Por favor, complete su respuesta en sí misma. Si desea consultar otras respuestas, enlace a la respuesta específica. - flim

También eche un vistazo a Storm. Es una herramienta de mapeo SQL simple que le permite editar y crear entradas SQL fácilmente sin escribir las consultas.

He aquí un ejemplo sencillo:

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 buscar y utilizar objetos:

michael = store.find(User, User.name == u"Michael").one()
print str(user.ID) # 10

Buscar con clave principal:

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

Para más información ver el tutoriales.

Respondido el 03 de junio de 15 a las 13:06

Esta es la conexión Mysql DB

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

Respondido el 19 de enero de 19 a las 10:01

puede conectar su código python a mysql de esta manera.

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

cursor = db.cursor()

Respondido 14 Jul 18, 20:07

PyMySQL 0.10.1 - Lanzamiento: 10 de septiembre de 2020, también es compatible con python3.

python3 -m pip install PyMySQL

Código simple:

import pymysql

# Connect to the database
conn = pymysql.connect(host='127.0.0.1',user='root',passwd='root',db='fax')

# Create a Cursor object
cur = conn.cursor()

# Execute the query
cur.execute("SELECT * FROM fax.student")

# Read and print records
for row in cur.fetchall():
    print(row)

salida:

(1, 'Petar', 'Petrovic', 1813, 'Njegusi')
(2, 'Donald', 'Tramp', 1946, 'New York')
(3, 'Bill', 'Gates', 1955, 'Seattle')

Respondido 24 Oct 20, 15:10

Para Python 3.3

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

Tengo pip instalado en mi Windows 7, solo pip instalar cymysql

(no necesitas cython) rápido e indoloro

Respondido el 11 de Septiembre de 13 a las 11:09

Puede crear una nueva pregunta sobre SO y comentar con un enlace aquí. - Lazik

primero instale el controlador

pip install MySQL-python   

Entonces, un código básico es el siguiente:

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

Respondido 21 ago 17, 19:08

Primero instale el controlador (Ubuntu)

  • sudo apt-get install python-pip

  • sudo pip instalar -U pip

  • sudo apt-get install python-dev libmysqlclient-dev

  • sudo apt-get install MySQL-python

Códigos de conexión de la base de datos 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 ()

Respondido 05 ago 18, 06:08

Primer paso para obtener The Library: Abra la terminal y ejecute pip install mysql-python-connector. Después de la instalación, vaya al segundo paso.

Segundo paso para importar la biblioteca: Abra su archivo Python y escriba el siguiente código: import mysql.connector

Tercer paso para conectarse al servidor: Escriba el siguiente código:

conn = mysql.connector.connect (host =you host name like localhost or 127.0.0.1, nombre de usuario =your username like root, contraseña = your password)

Tercer paso Hacer el cursor: Hacer un cursor nos facilita la ejecución de consultas. Para hacer que el cursor use el siguiente código: cursor = conn.cursor()

Ejecución de consultas: para ejecutar consultas, puede hacer lo siguiente: cursor.execute(query)

Si la consulta cambia algo en la tabla, debe agregar el siguiente código después de la ejecución de la consulta: conn.commit()

Obtener valores de una consulta: si desea obtener valores de una consulta, puede hacer lo siguiente: cursor.excecute('SELECT * FROM nombre de la tabla') for i in cursor: print(i) #Or for i in cursor.fetchall(): print(i)

El método fetchall () devuelve una lista con muchas tuplas que contienen los valores que solicitó, fila tras fila.

Cerrar la conexión: Para cerrar la conexión debe utilizar el siguiente código: conn.close()

Excepción de manejo: Para la excepción de Handel, puede hacerlo mediante el siguiente método: try: #Logic pass except mysql.connector.errors.Error: #Logic pass Para usar una base de datos: por ejemplo, usted es un sistema de creación de cuentas donde está almacenando los datos en una base de datos llamada blabla, puede simplemente agregar un parámetro de base de datos al método connect (), como

mysql.connector.connect(database = nombre de la base de datos)

no elimine otra información como host, nombre de usuario, contraseña.

respondido 10 nov., 20:03

Un muy buen conector para MySQL y MariaDB is mysql-connector-python. Está escrito en Python para que puedas modificarlo cuando quieras.

Puede instalarlo ejecutando estos comandos:

pip3 uninstall mysql-connector
pip3 install mysql-connector-python

Entonces puedes usarlo con el siguiente código:

import mysql.connector

database = mysql.connector.connect(
    host='localhost',
    user='db_username,
    password='passwd',
    database='db_name',
    autocommit=True
)
cursor = database.cursor()

cursor.execute('SELECT * FROM users')

Puede pasar el parámetro de confirmación automática y configurarlo en True. De esta forma no tendrás que llamar database.commit() cada vez que actualiza la base de datos. También puedes prevenir algunos errores que he mencionado en otro pregunta.

Enlaces externos

  1. Conector Python MySQL
  2. SQL (lenguaje de consulta estructurado)

Respondido 08 Feb 21, 20:02

Primero, instale el conector python-mysql desde https://dev.mysql.com/downloads/connector/python/

en la consola de Python ingrese:

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

Respondido el 08 de junio de 18 a las 16:06

La pregunta era demasiado amplia, pero esta respuesta parece ser demasiado limitada (al menos en el sentido de que instalar e importar un módulo por sí solo no es suficiente). También parece haber shell y python entremezclados en un solo bloque de código sin ninguna explicación o pista sobre qué va a dónde y qué hace. - Ondrej K.

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.