para - python y mysql pdf




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

Deje de usar MySQLDb si quiere evitar instalar encabezados mysql solo para acceder a mysql desde python.

Utilice pymysql . Hace todo lo que hace MySQLDb, pero se implementó únicamente en Python sin NINGUNAS dependencias externas . Esto hace que el proceso de instalación en todos los sistemas operativos sea consistente y fácil. pymysql es un reemplazo para MySQLDb y IMHO, no hay razón para usar MySQLDb para nada ... ¡NUNCA! - PTSD from installing MySQLDb on Mac OSX and *Nix systems , pero eso es solo yo.

Instalación

pip install pymysql

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

Ejemplo de uso de pymysql Github repo

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 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 usarán pymysql de forma transparente.

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


SqlAlchemy

SQLAlchemy es el kit de herramientas SQL de Python y el Mapeador relacional de objetos que ofrece a los desarrolladores de aplicaciones el máximo poder y flexibilidad de SQL. SQLAlchemy proporciona un conjunto completo de patrones de persistencia conocidos a nivel empresarial, 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()

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

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 aún (!), Puede usar connection.select_db(database) , como se muestra 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()

Aquí hay una forma de hacerlo:

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


Intenta usar MySQLdb

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

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

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

  1. instale el conector usando pip

    pip install mysql-connector-python

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

  1. Use el método connect() de mysql connector python para conectarse a MySQL. Pase el argumento requerido para connect() . Ej. Host, nombre de usuario, contraseña y nombre de base de datos.

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

  3. Cierre la conexión después de que su trabajo se complete.

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 ("Your 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: use cursor.execute() y cursor.executemany() para ejecutar la consulta. y después de esto, use connection.commit() para conservar sus cambios en la base de datos.

  • Para recuperar datos: use cursor.execute() para ejecutar query y cursor.fetchall() , cursor.fetchone() , cursor.fetchmany(SIZE) para recuperar datos


Para escribir aplicaciones de base de datos en Python, hay cinco pasos a seguir:

Importe la interfaz SQL con el siguiente comando:

>>> import MySQLdb

Establezca una conexión con la base de datos con el siguiente comando:

conn = MySQLdb.connect (host = 'localhost', user = 'root', passwd = '') ... donde host es el nombre de su máquina host, seguido del nombre de usuario y la contraseña. En el caso de la raíz, no es necesario proporcionar una contraseña.

Crea un cursor para la conexión con el siguiente comando:

>>>cursor = conn.cursor()

Ejecute cualquier consulta SQL usando este cursor como se muestra a continuación; aquí, los resultados en términos de muestran un número de filas afectadas por esta consulta:

cursor.execute ('Crear base de datos biblioteca') // Indica cuántas filas afectadas

>>> cursor.execute('use Library')

>>>table='create table books(book_accno char(30) primary key, book_name
char(50),no_of_copies int(5),price int(5))'
>>> cursor.execute(table)

Finalmente, obtenga el conjunto de resultados e itere sobre este conjunto de resultados. En este paso, el usuario puede obtener los conjuntos de resultados como se muestra a continuación:

>>> cursor.execute('select * from books')
>>> cursor.fetchall()

(('Py9098', 'Programming With Python', 100L, 50L), ('Py9099', 'Programming With Python', 100L, 50L))



Puedes conectar tu código python a mysql de esta manera.

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

cursor = db.cursor()

Sólo 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.


También eche un vistazo a Storm . Es una herramienta de asignación de SQL simple que le permite editar y crear fácilmente entradas de 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 it
class User(object):
        __storm_table__ = "user" # table name
        ID = Int(primary=True) #field ID
        name= Unicode() # field name

database = create_database("mysql://root:[email protected]: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 objetar uso:

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

Encontrar con clave primaria:

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

Para más información ver el tutorial .


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

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


primero instala 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 

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

Mi forma preferida, que también es pythonic, es usar el poderoso SQLAlchemy lugar. Aquí hay un tutorial relacionado con la consulta , y aquí hay un tutorial sobre las capacidades ORM de SQLALchemy.





mysql