Cómo conectarse a la base de datos MySQL usando Python
2. Ejecute la instrucción SQL y reciba el valor de retorno.
3. Cerrar la conexión de la base de datos
1. El módulo MySQLdb se usa en la base de datos MySQL, pero la biblioteca de terceros MySQLdb utilizada por Python para vincularse a MySQL no es compatible con Python3. .x
Nota especial: cuando hice el experimento en la computadora, mi Python era la versión 2.7.2. Después de instalar la versión correspondiente de Mysqldb, puede ejecutarla directamente y conectarse exitosamente a la base de datos, por lo que si todos son tan fluidos como yo, no es necesario que lea lo siguiente, simplemente salte para ver cómo ejecutar la declaración SQL en punto 2! Si se produce una excepción después de la instalación, puede consultar las siguientes soluciones.
La clave para la conexión es instalar el módulo MySQLdb y descargar la versión correspondiente de Python:
Después de descargar e instalar, la ruta de instalación de Python en la computadora se detectará automáticamente y la ruta de descompresión del módulo se completará automáticamente (la mía es: d:\program files\activePython 2.6.6.17\lib\site-packages\).
Pero no se puede utilizar después de la descompresión. Algunos archivos del módulo MySQLdb deben modificarse:
① Busque __init__. py en el directorio MySQLdb (el mío es: d:\program files\active python 2.6.6.17\lib\site-packages\MySQLdb):
De setsimport ImmutableSet y DBAPISet(ImmutableSet) Clase: en las líneas 34 y 35 del comentario, agregue la clase DBAPISet(frozenset) después de ellos:
#Importar colección inmutable de colección
# clase DBAPISet(ImmutableSet) :
Clase DBAPISet (congelado):
②. Abra el convertidor:
Tenga en cuenta que al importar BaseSet desde Conjuntos, línea 37, cambie la línea 45. Cambie el Conjunto en la línea de retorno (. [I para I en s split(',')ifi]) a Set; de manera similar, cambie el Set en la línea 129 Set: Set2Str a Set (no modifique Set2Str. La modificación termina aquí).
2. Establecer una conexión a la base de datos
Importar MySQLdb
conn = mysqldb.connect(host = "localhost", user="root", passwd=" sa ", db="mytable ")
Los parámetros más utilizados incluyen
Host: el nombre de host del servidor de base de datos conectado; 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: El secreto de inicio de sesión en la base de datos. Por defecto, está vacío.
Db: El nombre de la base de datos a utilizar. No hay ningún valor predeterminado.
Puerto: Puerto TCP utilizado por el servicio MySQL. El valor predeterminado es 3306.
La conexión Conn tiene dos métodos importantes: confirmar adiciones y modificaciones, y revertir para cancelar adiciones o modificaciones.
3. Ejecutar operaciones de base de datos
n = cursor.execut(sql, param)
Obtendremos un objeto de cursor a través del objeto de conexión y luego utilizará los métodos proporcionados por el cursor para funcionar.
Estos métodos incluyen dos categorías: 1.
Ejecutar comando y 2. Recibir valor de retorno.
Método de ejecución del comando del cursor:
Callproc(self, procname, args): se utiliza para ejecutar procedimientos almacenados. Los parámetros recibidos son el nombre del procedimiento almacenado y la lista de parámetros, y el valor de retorno es el número de filas afectadas.
Ejecutar(self, query, args): Ejecuta una sentencia sql. Los parámetros recibidos son la propia instrucción SQL y la lista de parámetros utilizada, y el valor de retorno es el número de filas afectadas.
Executemany(self, query, args): ejecuta una instrucción SQL uno a uno, pero ejecuta repetidamente los parámetros en la tabla de parámetros y el valor de retorno es el número de filas afectadas.
Nextset(self): pasa al siguiente conjunto de resultados.
Métodos utilizados por los cursores para recibir valores de retorno:
Fetchall(self): recibe todas las filas de resultados devueltos.
Fetchmany(self, size=None): recibe el tamaño para devolver la fila del resultado. Si el valor de tamaño es mayor que el número de filas de resultados devueltas, se devolverán los datos cursor.arraysize.
Fetchone(self): Devuelve una fila de resultados.
Desplazamiento (self, value, mode='relative '): Mueve el puntero a una línea determinada. Si modo = 'relativo', significa mover la barra de valores desde la fila actual; si modo = 'absoluto', significa mover la barra de valores comenzando desde la primera fila del conjunto de resultados.
El siguiente código es un ejemplo completo.
#Use la instrucción SQL, todos los parámetros recibidos aquí usan un marcador de posición. Tenga en cuenta que los marcadores de posición siempre utilizan s sin importar qué tipo de datos esté insertando.
sql= "Insertar en valor de cdinfo (s, s, s, s, s)"
#param debe ser una tupla o una lista.
param=(title, cantante, imgurl, url, alpha)
#Ejecución, si tiene éxito, el valor de n es 1.
n = cursor.execut(sql, param)
#Ejecutar la operación de consulta nuevamente.
cursor .execut(" select * from cdinfo ")
#Usamos el método fetchall. De esta forma, todos los resultados devueltos por la consulta se almacenarán en cd. Cada resultado es una tupla de datos de tipo y estas tuplas forman una tupla.
cds=cursor.fetchall()
#Debido a que es una tupla, puedes usar el conjunto de resultados de esta manera.
Imprima el CD[0][3]
#O muéstrelo directamente para ver cómo se ve el conjunto de resultados.
Imprimir CD
#Si necesita insertar datos en lotes, hágalo.
sql="insertar en valor de cdinfo (0, s, s, s, s, s)"
#El conjunto de cada valor es una tupla y el conjunto de parámetros completo consta de una tupla o una lista.
param=((title, cantante, imgurl, url, alpha), (título2, cantante2, imgurl2, url2, alpha2))
#Utilice el método ejecutarmany para insertar datos en lotes. ¡Este es un método realmente genial!
n=cursor.executemany(sql, param)
Cabe señalar (o creo que es extraño) que después de insertar, eliminar o modificar, el conn.commit() El método debe llamarse enviar.
De esta forma, los datos se guardarán realmente en la base de datos. No sé si es un problema con mi configuración de MySQL. En resumen, cuando comencé a usarlo hoy, los datos no persistían en la base de datos si no usaba la confirmación, pero así fue.
4. Cerrar la conexión de la base de datos
Necesita cerrar el objeto puntero y el objeto de conexión por separado. Tienen el mismo nombre.
cursor.close()
conn.close()
Codificación 5,
5 (para evitar caracteres confusos) p>
Notas:
1 La codificación del archivo Python está configurada en utf-8 (#encoding=utf-8 delante del archivo).
2 Base de datos MySQL charset=utf-8
3 Python usa el parámetro charset=utf8 para conectarse a MySQL.
4Establezca la codificación predeterminada de Python en UTF-8 (sys. setdefaultencoding(UTF-8)).
#Encoding=utf-8
Importar sistema
Importar MySQLdb
Recargar (sistema)
sys .setdefaultencoding('utf-8 ')
db=MySQLdb.connect(user='root ', charset='utf8 ')
Nota: la configuración del archivo de configuración de MySQL también es obligatoria. 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="select * from myt "
Cursor.execute(sql)
fila=cursor.fetchone()
Imprimir fila
cursor.close()
con.close()
Ejecute la siguiente sentencia SQL para obtener el valor de retorno:
//Obtener el cursor de la conexión
cursor= conn.cursor()
//Consulta
sql = "seleccionar * de la tabla "
//Agregar
Sql = " Insertar tabla (campo, campo) valor (valor) "
//Modificar
Sql = "Actualizar conjunto de tabla campo = 'valor' donde condición"
//Delete
Sql = "Eliminar condición de ubicación de la tabla"
Cursor ejecutar(sql)
Valor de retorno
cur .execute('select * from tables')
El valor de retorno es el número de filas obtenidas por la declaración SQL, como 2L, que significa 2 filas.
La información de la fila se puede obtener a partir del método fetchone o fetchall del objeto.
Obtener información de fila
El método fetchone() del objeto puntero obtiene el valor de retorno de tupla de una fila a la vez:
Referencia
gt gt gtrow=cur.fetchone()
gt gt gt imprimir línea
(' usuario1 ', ' 52c 69 E3 a 57331081823331 C4 e 69 d3f 2 e ', 1000L, 1000L, '/home/FTP/user1 ', '')
El método Fetchall() del objeto puntero puede recuperar todas las filas en el conjunto de resultados del puntero y el conjunto de resultados devuelto es un tupla:
Cita
gt gt gtcur.scroll(0,'absolute')
gt gt gtrow=cur.fetchall()
gt gt gtImprimir línea
((' usuario1 ', ' 52c 69 E3 a 57331081823331 C4 e69 d3f 2 e ', 1000L, 1000L, '/home/FTP/usuario1 ', ''), ( ' user2 ', ' 7 e58d 63 b 60197 CEB 55 a 65448
Mover el puntero
Cuando se utiliza el método fetchone(), el puntero se moverá. Por lo tanto, si el puntero está. no se restablece, la información que usa fetchall solo contendrá el puntero El contenido de las siguientes líneas
Mueva el puntero manualmente usando:
cur.scroll(int, parm)
p>Significado:
Cita
Int: el número de líneas a mover, un número entero; en modo relativo, los números positivos se mueven hacia abajo y los números negativos hacia arriba. /p>
Parm: el modo de movimiento; el modo predeterminado es relativo, el modo absoluto es aceptable
Actualización de datos
Modificación de datos, incluida la inserción y la actualización. y eliminar, se realizan utilizando el método ejecutar() del objeto puntero:
cur ejecutar(" insertar en la tabla (fila 1, fila2) valor (' 111 ', ' 222 ')")
cur ejecutar ("actualizar conjunto de tabla fila 1 = 'prueba' donde fila 2 = 'fila 2'")
cur ejecutar(" eliminar de la tabla donde fila 1 =. ' fila 1 ' ")
Debido a que las comillas simples "" se utilizan para la identificación en sentencias SQL, las cadenas en Python deben estar entre comillas dobles.
Además, también puede utilizar el método de escritura de "cadena de formato" de Python para simplificar el comando, como por ejemplo:
cur ejecutar(" actualizar conjunto de tabla fila 1 = ' s '. , donde fila 2 = ' s ' "(' valor 1 ', ' valor2 '))
※ Tenga en cuenta que la comilla simple de ' s ' es el separador de la declaración SQL y la comilla simple la comilla de 'valor1' es un separador de cadenas de Python, tienen diferentes significados. Si se necesita un separador o si se deben utilizar comillas dobles o simples como separadores depende de su significado.
Por ejemplo, existe:
cur ejecutar(" update FTPUSERS set passwd = s, donde userid = ' s ' "(" MD5(' 123 ')", ' usuario2 '))
Aquí paswd=s se debe a que la función md5() de SQL no requiere un intervalo de comillas simples; "md5('123 ')" es una cadena de Python con comillas simples, por lo que está entre comillas dobles.
Enviar cambios
En circunstancias normales, el módulo MySQLdb enviará cambios automáticamente. Pero después de actualizar los datos, los ejecutamos manualmente una vez:
conn.commit()
Cerrar la conexión de la base de datos
Necesita cerrar el objeto puntero y el objeto de conexión por separado. Tienen el mismo nombre.
cursor.close()
conn.close()