La mayoría de las respuestas aquí se centran en instalar la biblioteca MySQLdb, realmente sugeriría optar por MySQL Connector / Python proporcionado por MySQL / Oracle, lo que simplifica el proceso: stackoverflow.com/questions/372885/…
Mr. Napik
8
El problema con el uso de Oracle Connector / Python es que tiene errores sutiles y otros problemas de integración. Es fácil de instalar, pero es casi imposible trabajar para todos los casos de uso del mundo real para los que lo he probado. Por eso siempre recomiendo MySQLdb.
Joe C.
77
@ Mr.Napik que estoy usando pymysqlporque es Python libre de acuerdo con esta comparación .
Cees Timmerman
Respuestas:
1246
Conectando a MYSQL con Python 2 en tres pasos
1 - Configuración
Debe instalar un controlador MySQL antes de hacer algo. A diferencia de PHP, solo el controlador SQLite se instala de manera 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 el usuario de Windows, puede obtener un exe de MySQLdb .
Para Linux, este es un paquete informal (python-mysqldb). (Puede utilizar sudo apt-get install python-mysqldb(para distribuciones basadas en Debian), yum install MySQL-python(para distribuciones basadas en rpm) o dnf install python-mysql(para distribuciones modernas de Fedora) en la línea de comandos para descargar).
Después de la instalación, reinicie. Esto no es obligatorio, pero me impedirá responder 3 o 4 preguntas más en esta publicación si algo sale mal. Entonces, reinicie.
Entonces es como usar cualquier otro paquete:
#!/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()
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 Python es SQLAlchemy .
Le recomiendo encarecidamente que lo use: su vida será mucho más fácil.
Recientemente descubrí otra joya en el mundo de Python: peewee . Es un ORM muy ligero, realmente fácil y rápido de configurar y usar. Me hace el día para proyectos pequeños o aplicaciones independientes, donde usar herramientas grandes como SQLAlchemy o Django es excesivo:
import peeweefrom peewee import*
db =MySQLDatabase('jonhydb', user='john', passwd='megajonhy')classBook(peewee.Model):
author = peewee.CharField()
title = peewee.TextField()classMeta:
database = dbBook.create_table()
book =Book(author="me", title='Peewee is cool')
book.save()for book inBook.filter(author="me"):print book.title
Este ejemplo funciona fuera de la caja. No pip install peeweese requiere nada más que tener pipí ( ).
Me alegro de que te guste el peewee !! He agregado soporte para MySQL, así como también documentación para integrarlo. ¡Feliz pirateo!
coleifer
14
Tenga en cuenta que, al escribir esto, MySQLdb no es compatible con Python 3. La página de sourceforge dice "Próximamente será compatible con Python 3", pero no se ha actualizado desde 2012-10-08. Para Python 3 hay PyMySQL y ourql .
Paul
8
También tenga en cuenta que se requiere lo siguiente:pip install MySQL-python
Ben Crowhurst
55
Esta respuesta sería más útil con un ejemplo de conexión 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.
Anthony
3
Peewee ha cambiado el comportamiento predeterminado y ya no usa la confirmación automática por defecto. Incluso la situación del controlador DB ha cambiado ahora. La pregunta necesita actualizarse, pero debido al abuso de ediciones en algunas de mis respuestas, ya no las edito.
e-satis
189
Aquí hay una forma de hacerlo, utilizando MySQLdb , que solo es compatible con 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()
¿Es necesario comprometerse en este ejemplo ya que no está modificando la base de datos?
sumanth232
3
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 hosting compartido? Alguna alternativa?
Bhavesh Gangani
@BhaveshGangani, deberá ponerse en contacto con su host y preguntarle por qué las bibliotecas de Python son compatibles. Si son compatibles con pypi, siempre puede cargar el paquete cuando se realiza la implementación.
George Stocker
1
Curiosamente, aunque los documentos dicen que esto solo funciona con Python 2, parece que funciona con Python 3 para mí
lucidbrot
122
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".
Sí lo es. Además, es menos complicado que MySQLdb y la API es mejor en mi opinión. Esta debería ser la respuesta.
Anthony
1
Usar el conector oficial MySQL de Python es la mejor manera de ganar tiempo
Anas
2
@ J0hnG4lt Puede hacer clic en "No, gracias, simplemente inicie mi descarga" debajo del formulario de inicio de sesión (que en realidad parece obligatorio, pero no lo es).
ComFreek
66
@ComFreek genial. ¿Cómo es eso mejor? ¿Podemos dejar de aplicar el "flujo de trabajo de Windows"? La gestión de paquetes existe.
Es un paquete (alrededor de 110k), Python puro, por lo que es independiente del sistema y fácil de instalar. Simplemente descargue, haga doble clic, confirme el acuerdo de licencia y listo. No hay necesidad de Xcode, MacPorts, compilar, reiniciar ...
Luego 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()
No es tan simple como afirmas. Cuando intenté instalar las rpm, tuve un par de problemas de dependencia (FileDigests y PayloadIsXz) de mi 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
Solía preferir esta biblioteca, pero ya no es oficialmente compatible con PyPi. Desde entonces me mudé a MySQLdb.
Steven Mercatante
2
@Arms: ¿ya no se admite oficialmente en PyPi? ¿Tienes alguna fuente para esto?
Messa
77
pip install mysql-connector-pythonTambién funcionará. No veo donde dice que ya no es compatible con PyPi. Excelente si no tiene acceso a los compiladores gcc / C en su sistema y, por lo tanto, no puede instalarlo mysqldb.
decreta el
77
a partir del 7 de noviembre de 2016, el paquete para pip es solo mysql-connector, pip search mysql-connectorpara encontrar el nombre del paquete. respuesta desde aquí: stackoverflow.com/a/22829966/2048266
nommer
117
Deje de usar MySQLDb si desea evitar la instalación de encabezados mysql solo para acceder a mysql desde python.
Usa pymysql . Hace todo lo que hace MySQLDb, pero se implementó únicamente en Python sin dependencias externas . Esto hace que el proceso de instalación en todos los sistemas operativos sea consistente y fácil. pymysqles una caída en el reemplazo de 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 solo soy yo.
Instalación
pip install pymysql
Eso es todo ... ya estás listo para jugar.
Ejemplo de uso del repositorio 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()
TAMBIÉN - Reemplace MySQLdb en código existente de forma rápida y transparente
Si tiene un código existente que usa MySQLdb, puede reemplazarlo fácilmente con pymysql mediante este sencillo 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.
"Siempre" es un poco fuerte ... ¿Qué tiene de malo la orina o la sqlalchemy? Incluso si existen como bibliotecas ORM, siguen siendo igual de útiles
OneCricketeer
44
No, no creo que sea fuerte en absoluto. Dada la opción de usar MySQLDb o PyMysql, creo que elegir PyMysql es obvio porque es una instalación simple de pip sin dependencias, mientras que MySQLDb requiere que se instalen archivos de encabezado de desarrollo mysql para que su plataforma OS funcione. Sqlalchemy no tiene en cuenta esto porque todavía necesita envolver un módulo que pueda comunicarse con mysql como PyMysql, MySQLDb, CyMySQL, etc. Sin embargo, Peewee parece interesante, lo comprobaré
OkezieE
2
@ cricket_007 peewee y sqlalchemly no implementan su propio conector db, proporcionan una capa por encima de MySQLdb, etc.
rocksportrocker
25
Intenta usar MySQLdb . MySQLdb solo es compatible con Python 2.
Ten cuidado - este módulo no tiene soporte zona horaria en la conexión
kommradHomer
1
@kommradHomer ¿Puedes elaborar por favor?
Pyderman
1
@kommradHomer: ¿qué importancia tiene para usted (u otros, especialmente cuando se conecta localhost)?
warren
1
@warren no, no estaba conectando localhost en mi caso
kommradHomer
1
¿Cómo detecto qué biblioteca está instalada para conectarse a una base de datos?
posfan12
18
Como controlador de base de datos, también existe ourql . Algunas de las razones enumeradas en ese enlace, que dicen por qué ourql es mejor:
ourql tiene una parametrización real, enviando el SQL y los datos a MySQL completamente por separado.
ourql permite que el texto o los datos binarios se transmitan a la base de datos y se transmitan fuera de la base de datos, en lugar de requerir que todo se guarde en el cliente.
ourql puede insertar filas perezosamente y buscar filas perezosamente.
ourql tiene soporte Unicode activado por defecto.
OurSQL soporta Python 2.4 a 2.7 sin advertencias de desaprobación 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 conectarme a MySQL con el nuestro?
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]
No entiendo el 'se ejecuta de forma nativa en Python 3.x'. Solo intenté instalarlo y el setup.py funciona porque ni siquiera usa llamadas de impresión compatibles con Python 3. Sonaba genial hasta que realmente lo intenté.
otakucode
15
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:
Algunos chicos ya respondieron tu pregunta allí. Olvidó ejecutar mydb.commit()después de insertar valores en la tabla
Sherzod
13
SqlAlchemy
SQLAlchemy es el kit de herramientas Python SQL y Object Relational Mapper que brinda a los desarrolladores de aplicaciones toda la potencia y flexibilidad de SQL. SQLAlchemy proporciona un conjunto completo de patrones de persistencia de nivel empresarial bien conocidos, diseñados para un acceso eficiente y de alto rendimiento a la base de datos, adaptado a un lenguaje de dominio simple y pitónico.
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()
Forma 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()
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 desea crear la base de datos (!), Puede usarla 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()
Aunque algunos de ustedes pueden marcar esto como un duplicado y molestarse porque estoy copiando la respuesta de otra persona, REALMENTE me gustaría resaltar un aspecto de la respuesta del Sr. Napik. Como me perdí esto, causé el tiempo de inactividad del sitio web a nivel nacional (9 minutos). Si solo alguien compartiera 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 la cláusula Try and Finalmente . Esto permite que las conexiones a SIEMPRE se cierren, independientemente de lo que suceda en la porción de cursor / sqlstatement del código. Muchas conexiones activas hacen que DBLoadNoCPU se dispare y podría bloquear un servidor db.
¡Espero que esta advertencia ayude a salvar servidores y, en última instancia, trabajos! :RE
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 mencionados a continuación para conectar MySQL
Use el connect()método del conector python de mysql para conectarse a MySQL. Pase el argumento requerido al connect()método. es decir, host, nombre de usuario, contraseña y nombre de la base de datos.
Cree un cursorobjeto a partir del objeto de conexión devuelto por el connect()método para ejecutar consultas SQL.
cierre la conexión después de que termine su trabajo.
Ejemplo :
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 operaciones DML: use cursor.execute()y cursor.executemany()para ejecutar la consulta. y después de este uso connection.commit()para persistir sus cambios a DB
Para obtener los datos - Uso cursor.execute()de ejecutar la consulta y cursor.fetchall(), cursor.fetchone(), cursor.fetchmany(SIZE)para obtener los datos
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 referirse a otras respuestas, por favor enlace a la respuesta específica.
Flimm
5
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())
+1 por proponer la solución más rápida para python 3. Sin embargo, mysql.connectory _mysqldar a ambos un error de importación (aunque la segunda opción debería funcionar de acuerdo con la documentación). import MySQLdbfunciona, y luegoMySQLdb.connect...
Suzana
3
También eche un vistazo a Storm . Es una herramienta de mapeo SQL simple que le permite editar y crear fácilmente entradas SQL sin escribir las consultas.
Aquí hay un ejemplo simple:
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 buscar y 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
La pregunta era un poco 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 funcionará). También parece haber shell y python entremezclados en un solo bloque de código sin ninguna explicación o pistas sobre qué va a dónde y qué hace.
pymysql
porque es Python libre de acuerdo con esta comparación .Respuestas:
Conectando a MYSQL con Python 2 en tres pasos
1 - Configuración
Debe instalar un controlador MySQL antes de hacer algo. A diferencia de PHP, solo el controlador SQLite se instala de manera 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 el usuario de Windows, puede obtener un exe de MySQLdb .
Para Linux, este es un paquete informal (python-mysqldb). (Puede utilizar
sudo apt-get install python-mysqldb
(para distribuciones basadas en Debian),yum install MySQL-python
(para distribuciones basadas en rpm) odnf install python-mysql
(para distribuciones modernas de Fedora) en la línea de comandos para descargar).Para Mac, puede instalar MySQLdb usando Macport .
2 - Uso
Después de la instalación, reinicie. Esto no es obligatorio, pero me impedirá responder 3 o 4 preguntas más en esta publicación si algo sale mal. Entonces, reinicie.
Entonces es como usar cualquier otro paquete:
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 Python es SQLAlchemy .
Le recomiendo encarecidamente que lo use: su vida será mucho más fácil.
Recientemente descubrí otra joya en el mundo de Python: peewee . Es un ORM muy ligero, realmente fácil y rápido de configurar y usar. Me hace el día para proyectos pequeños o aplicaciones independientes, donde usar herramientas grandes como SQLAlchemy o Django es excesivo:
Este ejemplo funciona fuera de la caja. No
pip install peewee
se requiere nada más que tener pipí ( ).fuente
pip install MySQL-python
Aquí hay una forma de hacerlo, utilizando MySQLdb , que solo es compatible con Python 2:
Referencia aquí
fuente
No module named MySQLdb
. ¿Cómo puedo usar mysql con python en hosting compartido? Alguna alternativa?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/
fuente
Si no necesita MySQLdb, pero aceptaría cualquier biblioteca, le 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 fácil de instalar. Simplemente descargue, haga doble clic, confirme el acuerdo de licencia y listo. No hay necesidad de Xcode, MacPorts, compilar, reiniciar ...
Luego te conectas como:
fuente
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
También funcionará. No veo donde dice que ya no es compatible con PyPi. Excelente si no tiene acceso a los compiladores gcc / C en su sistema y, por lo tanto, no puede instalarlomysqldb
.pip search mysql-connector
para encontrar el nombre del paquete. respuesta desde aquí: stackoverflow.com/a/22829966/2048266Usa pymysql . Hace todo lo que hace MySQLDb, pero se implementó únicamente en Python sin dependencias externas . Esto hace que el proceso de instalación en todos los sistemas operativos sea consistente y fácil.
pymysql
es una caída en el reemplazo de 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 solo soy yo.Instalación
pip install pymysql
Ejemplo de uso del repositorio pymysql Github
Si tiene un código existente que usa MySQLdb, puede reemplazarlo fácilmente con pymysql mediante este sencillo proceso:
Todas las referencias posteriores a MySQLdb utilizarán pymysql de forma transparente.
fuente
Intenta usar MySQLdb . MySQLdb solo es compatible con Python 2.
Hay una página de instrucciones aquí: http://www.kitebird.com/articles/pydbapi.html
De la página:
fuente
localhost
)?Como controlador de base de datos, también existe ourql . Algunas de las razones enumeradas en ese enlace, que dicen por qué ourql es mejor:
Entonces, ¿cómo conectarme a MySQL con el nuestro?
Muy similar a mysqldb:
El 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.
fuente
Ejecute este comando en su terminal para instalar el conector mysql:
Y ejecute esto en su editor de Python para conectarse a MySQL:
Muestras para ejecutar Comandos MySQL (en su editor python):
Para más comandos: https://www.w3schools.com/python/python_mysql_getstarted.asp
fuente
mysql-connector
solo con. stackoverflow.com/questions/59405740/…mydb.commit()
después de insertar valores en la tablaSqlAlchemy
Instalación
Consulta RAW
Forma ORM
fuente
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 desea crear la base de datos (!), Puede usarla
connection.select_db(database)
, como se demuestra a continuación.fuente
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 la poderosa SQLAlchemy en su lugar. Aquí hay un tutorial relacionado con consultas , y aquí hay un tutorial sobre las capacidades ORM de SQLALchemy.
fuente
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 está mi proceso de prueba (necesito 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.4s):
Aquí está el perfil pymysql:
mysqlclient (0.4s)
Aquí está el perfil de mysqlclient:
Entonces, parece que mysqlclient es mucho más rápido que pymysql
fuente
Aunque algunos de ustedes pueden marcar esto como un duplicado y molestarse porque estoy copiando la respuesta de otra persona, REALMENTE me gustaría resaltar un aspecto de la respuesta del Sr. Napik. Como me perdí esto, causé el tiempo de inactividad del sitio web a nivel nacional (9 minutos). Si solo alguien compartiera esta información, ¡podría haberlo evitado!
Aquí está su código:
Lo importante aquí es la cláusula Try and Finalmente . Esto permite que las conexiones a SIEMPRE se cierren, independientemente de lo que suceda en la porción de cursor / sqlstatement del código. Muchas conexiones activas hacen que DBLoadNoCPU se dispare y podría bloquear un servidor db.
¡Espero que esta advertencia ayude a salvar servidores y, en última instancia, trabajos! :RE
fuente
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 mencionados a continuación para conectar MySQL
instale el conector usando pip
pip install mysql-connector-python
o puede descargar el instalador desde https://dev.mysql.com/downloads/connector/python/
Use el
connect()
método del conector python de mysql para conectarse a MySQL. Pase el argumento requerido alconnect()
método. es decir, host, nombre de usuario, contraseña y nombre de la base de datos.Cree un
cursor
objeto a partir del objeto de conexión devuelto por elconnect()
método para ejecutar consultas SQL.cierre la conexión después de que termine su trabajo.
Ejemplo :
Referencia: https://pynative.com/python-mysql-database-connection/
API importante de MySQL Connector Python
Para operaciones DML: use
cursor.execute()
ycursor.executemany()
para ejecutar la consulta. y después de este usoconnection.commit()
para persistir sus cambios a DBPara obtener los datos - Uso
cursor.execute()
de ejecutar la consulta ycursor.fetchall()
,cursor.fetchone()
,cursor.fetchmany(SIZE)
para obtener los datosfuente
Solo una modificación en la respuesta anterior. Simplemente ejecute este comando para instalar mysql para python
¡recuerda! Es sensible a mayúsculas y minúsculas.
fuente
mysqlclient es el mejor ya que otros solo brindan soporte para versiones específicas de python
código de ejemplo
ver https://github.com/PyMySQL/mysqlclient-python
fuente
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 luegoMySQLdb.connect...
También eche un vistazo a Storm . Es una herramienta de mapeo SQL simple que le permite editar y crear fácilmente entradas SQL sin escribir las consultas.
Aquí hay un ejemplo simple:
Para buscar y usar objetos:
Buscar con clave principal:
Para más información ver el tutorial .
fuente
Esta es la conexión Mysql DB
fuente
primero instale el controlador
Entonces un código básico es así:
fuente
Puede conectar su código de Python a MySQL de esta manera.
fuente
Primero instale el controlador (Ubuntu)
sudo apt-get install python-pip
sudo pip install -U pip
sudo apt-get install python-dev libmysqlclient-dev
sudo apt-get install MySQL-python
Códigos de conexión de base de datos MySQL
fuente
Para python 3.3
CyMySQL https://github.com/nakagami/CyMySQL
Tengo pip instalado en mi Windows 7, solo pip install cymysql
(no necesitas cython) rápido e indoloro
fuente
Primero, instale el conector python-mysql desde https://dev.mysql.com/downloads/connector/python/
en la consola de Python, ingrese:
fuente