Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo se conecta Python a la base de datos MySQL

Cómo se conecta Python a la base de datos MySQL

1. Establezca una conexión con la base de datos

2. Ejecute la instrucción SQL y reciba el valor de retorno

3. Cierre la conexión de la base de datos

1. La base de datos utiliza el módulo MySQLdb, pero MySQLdb, la biblioteca de terceros utilizada por Python para vincularse a MySQL, no es compatible con Python3. x

Nota especial: experimenté en mi computadora. Mi Python es la versión 2.7.2. Se puede ejecutar directamente después de instalar la versión correspondiente de MySQLdb y la conexión con la base de datos es exitosa. Tienes tanto éxito como yo, no necesitas leer lo siguiente, ¡simplemente omítelo y mira el punto 2 sobre cómo ejecutar la instrucción SQL! Si se produce una excepción después de la instalación, puede consultar las siguientes soluciones.

La clave para la conexión es descargar la versión correspondiente de Python al instalar el módulo MySQLdb:

Después de descargar e instalar, la ruta de instalación de Python de la computadora se detectará automáticamente y la ruta al módulo descomprimido se completará automáticamente (el mío es: D:\ProgramFiles\ActivePython 2.6.6.17\).Lib(site-packages).

Pero no funciona después de la descompresión. Debes modificar algunos archivos en el módulo MySQLdb:

①. En el directorio MySQLdb (el mío es: D:\ProgramFiles\ActivePython 2.6. 6.17\Lib\site-packages\MySQLdb) Busque __init__.py:

Líneas de comentario 34, 35 de setsimport ImmutableSet, clase DBAPISet(ImmutableSet):, agregue clase DBAPISet(frozenset):

# de conjuntos importar ImmutableSet

# clase DBAPISet(ImmutableSet):

clase DBAPISet(frozenset):

②.Abrir convertidores.py:< / p>

El comentario en la línea 37 es de sets import BaseSet, Set Change Set to set in return Set([ i for i in s.split(', ') ifi ]) en la línea 45 también cambia Set Change; para configurar en Set.Set2Str, en la línea 12: Set2Str en la línea 129. Configurar en la línea 129: En Set en la línea 129: Set2Str, cambie Set a set (no modifique Set2Str), luego en Realizar modificaciones aquí

2. Establecer una conexión a la base de datos

importar MySQLdb

conn=MySQLdb.connect(host="localhost", user="root", passwd="sa", passwd= "sa", passwd="contraseña", passwd="contraseña", passwd="contraseña", passwd="contraseña").passwd="sa", db="mytable")

Más comúnmente Los parámetros utilizados incluyen

host: el nombre de host del servidor de base de datos que se conectará, el valor predeterminado es localhost.

usuario: nombre de inicio de sesión de la base de datos. El valor predeterminado es el usuario actual.

contraseña: contraseña de inicio de sesión en la base de datos. El valor predeterminado está vacío.

db: El nombre de la base de datos a utilizar. Sin valor predeterminado.

puerto: Puerto TCP utilizado por el servicio MySQL. El valor predeterminado es 3306.

connect tiene dos métodos importantes: la confirmación se utiliza para enviar adiciones y modificaciones; la reversión se utiliza para deshacer adiciones o modificaciones

3. =cursor.execute(sql, param)

Usaremos el objeto de conexión para obtener un objeto de cursor, y a continuación usaremos los métodos proporcionados por el cursor.

Estos métodos incluyen principalmente dos categorías: 1. Ejecutar el comando; 2. Recibir el valor de retorno

El método utilizado por el cursor para ejecutar el comando:

callproc(self, procname, args): se utiliza para ejecutar procedimientos almacenados, recibe una lista de parámetros y una lista de parámetros que contiene el nombre del procedimiento almacenado, y el valor de retorno es el número de registros afectados

ejecutar(self, consulta, parámetros): ejecuta una sola instrucción sql, los parámetros recibidos son la instrucción sql en sí y la lista de parámetros a utilizar, y el valor de retorno es el número de registros afectados

ejecutarmany(self, query, parámetros): ejecute una sola instrucción SQL, pero repita los parámetros de la lista de parámetros. El valor de retorno es el número de filas afectadas

nextset(self): pasar al siguiente conjunto de resultados

El método utilizado por el cursor para recibir el valor de retorno:

fetchall (self): recibe todas las filas de resultados devueltas.

fetchmany(self, size=None): Recibe el tamaño de la fila devuelta. Si el tamaño es mayor que el número de filas devueltas, se devuelve cursor.arraysize.

fetchone(self): Devuelve una fila de resultados.

scroll(self, value, mode='relative'): mueve el puntero a una línea determinada. Si modo='relativo', la barra de valores se mueve desde la fila actual; si modo='absoluto', la barra de valores se mueve desde la primera fila del conjunto de resultados.

El siguiente código es un ejemplo completo.

#Usa sentencia sql, donde los parámetros a recibir están en el marcador de posición s. Tenga en cuenta que no importa qué tipo de datos se inserten, el marcador de posición debe ser s

sql="insert into cdinfo value(s, s, s, s, s, s, s)"

#param debe ser una tupla o lista

param=(title, cantante, imgurl, imgurl, imgurl)

El siguiente código es el ejemplo completo. cantante, imgurl, url, alfa)

#Ejecutar, si tiene éxito, el valor de n es 1

n=cursor.execute(sql, param)

# Nuevamente, ejecuta la operación de consulta

cursor.execute("select * from cdinfo")

#Usamos el método fetchall. De esta forma, cds guardará todos los resultados devueltos por la consulta. Cada resultado es una tupla, y estas tuplas forman una tupla

cds=cursor.fetchall()

#Como es una tupla, puedes usar el resultado como este Conjunto

imprimir cds[0][3]

# o mostrarlo directamente.

Vea cómo se ve el conjunto de resultados

imprimir cds

#Si necesita insertar datos en lotes, puede hacer esto

sql="insertar en cdinfo valores(0, s, s, s, s, s, s, s)"

#Cada colección de valores es una tupla y todo el conjunto de parámetros forma una tupla o lista

param =((title, cantante, imgurl, url, alfa), (título2, cantante2, imgurl2, url2, alfa2))

#Utilice el método ejecutarmany para insertar datos en lotes. ¡Este es un método genial!

n=cursor.executemany(sql,param)

Es importante tener en cuenta (o mejor dicho, de manera extraña para mí) que después de completar la inserción, eliminación o modificación, la conexión Es necesario llamar al método .commit() para enviar datos. De esta forma, los datos se guardarán realmente en la base de datos. No sé si esto es un problema con la configuración de MySQL; de todos modos, cuando comencé a usarlo hoy, los datos no persistían en la base de datos sin usar la confirmación, pero sí persistían en la base de datos.

4. Cerrar la conexión de la base de datos

Necesita cerrar el objeto de puntero y el objeto de conexión por separado.

Tienen métodos con el mismo nombre

cursor.close()

conn.close()

5.

5 codificación ( para evitar basura)

Cosas a tener en cuenta:

1 Los archivos Python están codificados en utf-8 (agregue #encoding =utf-8 delante del archivo)

2 Base de datos MySQL charset=utf-8

3 El parámetro utilizado cuando Python se conecta a MySQL es charset=utf8

4 Establezca la codificación predeterminada de Python en utf-8 (sys .setdefaultencoding(utf-8)

#encoding=utf-8

importar sistema

importar MySQLdb

recargar(sys)

sys.setdefaultencoding('utf-8')

db= MySQLdb.connect(user='root', charset='utf8')

Nota: Los ajustes del archivo de configuración de MySQL también deben configurarse como utf8

6. Demostración de la función del módulo

#! /usr/bin/python

importar MySQLdb

Con= MySQLdb .connect(host='localhost', usuario='root', passwd='root', db='abc')

cursor = con.cursor()

sql = "seleccionar * de myt"

cursor.execute(sql)

fila=cursor.fetchone()

imprimir fila

cursor .close()<

con.close()

Ejecute la siguiente instrucción SQL para obtener el valor de retorno:

/ / Obtener el cursor conectado

cursor=conn.cursor()

//Query

sql = "select * from table"

/ //agregar

sql = "insertar en la tabla(campo,campo) valores(valor,valor)"