Programación con Tkinter GUI en Python
Puedes usar sqlite, aquí te explicamos cómo usarlo.
Después de importar el módulo de base de datos Python?SQLITE Python2.5, SQLite3 está integrado y se convierte en un módulo integrado. Esto nos ahorra el esfuerzo de instalación y solo necesita importar~
<. p>importar?sqlite32. ¿Crear/abrir una base de datos? Al llamar a la función de conexión, especifique el nombre de la biblioteca. Si la base de datos especificada existe, abra la base de datos directamente. uno nuevo y ábrelo.
cx?=?sqlite3.connect("E:/test.db") también puede crear una base de datos en la memoria.
con?=?sqlite3.connect(":memory:")
3. Objeto de conexión a la base de datos
El objeto cx devuelto al abrir la base de datos es un Objeto de conexión de base de datos, que puede tener las siguientes operaciones:
commit()--Envío de transacción
rollback()--Reversión de transacción
close()- - Cerrar una conexión de base de datos
cursor()--¿Crear un cursor?
Acerca de commit(), si el nivel de aislamiento aislamiento_level es el predeterminado, entonces debes usarlo para cada operación en el comando de la base de datos, también puede establecer aislamiento_nivel=Ninguno, lo que cambiará al modo de envío automático.
4. ¿Usar el cursor para consultar la base de datos?
Necesitamos usar la declaración SQL del objeto cursor para consultar la base de datos y obtener el objeto de consulta. ?Defina un cursor mediante los siguientes métodos.
cu=cx.cursor() El objeto cursor tiene las siguientes operaciones:
execute()--ejecutar instrucción sql
executemany--ejecutar múltiples sql declaraciones Declaración
close()--Cierra el cursor
fetchone()--Obtiene un registro del resultado y apunta el cursor al siguiente registro
fetchmany( )--obtiene múltiples registros del resultado
fetchall()--obtiene todos los registros del resultado
scroll()--¿desplazamiento del cursor?
1.?Crear tabla
cu.execute("crear?tabla?catalogo?(id?entero?primaria?clave,pid?entero,nombre?varchar(10)?UNIQUE,apodo?texto? NULL )")
La declaración anterior crea una tabla llamada catálogo, que tiene una identificación de clave principal, un pid y un nombre. El nombre no se puede repetir y el apodo predeterminado es NULL.
2.?¿Insertar datos?
Tenga cuidado de evitar escribir lo siguiente:
#?Never?do?this?--?insecure?will provocar ataques de inyección
pid=200
c.execute("...?where?pid?=?'%s'"?%?pid)
Correcto El método es el siguiente. Si t es solo un valor único, también se debe usar la forma t=(n,), porque la tupla es inmutable.
for?t?in[(0,10,'abc','Yu'),(1,20,'cba','Xu')]:
cx.execute("insert?into?catalog?values?(?,?,?,?)",?t)
Simplemente inserte dos filas de datos, pero debe recordarse que solo después del envío Solo después de eso podrá surtir efecto. Usamos el objeto de conexión de la base de datos cx para realizar operaciones de confirmación y reversión
cx.commit()
3. > cu.execute("select?*?from?catalog")?
Para extraer los datos consultados, utilice la función de búsqueda del cursor, como por ejemplo:
In?[ 10]: ?cu.fetchall()
Fuera[10]:?[(0,?10,?u'abc',?u'Yu'),?(1,?20,? u'cba ',?u'Xu')]
Si usamos cu.fetchone(), el primer elemento de la lista se devolverá primero y, si se usa nuevamente, se devolverá el segundo elemento. , y así sucesivamente.
4. Modificar
En?[12]:?cu.execute("update?catalog?set?name='Boy'?where?id? =?0")
En?[13]:?cx.commit()
Nota, enviar después de modificar los datos
5. Eliminar p>
cu.execute("¿eliminar?del?catálogo?dónde?id?=?1")?
cx.commit()?
6.
Primero asegúrese de que su IDE o codificación predeterminada del sistema sea utf-8 y agregue u?
x=u'鱼' antes del carácter chino.
cu.execute("update?catalog? set?name=?where?id?=?0",x)
cu.execute("select?*?from?catalog")
cu.fetchall()
[(0,?10,?u'\u9c7c',?u'Yu'),?(1,?20,?u'cba', ?u'Xu')]
Si desea mostrar fuentes chinas, debe imprimir cada cadena en secuencia
In?[26]:?for?item?in ?cu.fetchall():
....:?para?elemento?en?item:
....:?imprimir?elemento,
....:?print p>
....:?
0?10?鱼?Yu
1?20?cba?Xu
7.Tipo de fila
La fila proporciona acceso a columnas, basado en índices y en nombres, que distingue entre mayúsculas y minúsculas y casi sin sobrecarga de memoria.
?El texto original es el siguiente:
sqlite3.Row?proporciona?acceso?basado?en índices?y?no distingue entre mayúsculas y minúsculas?basado en nombres?a?columnas?con?casi?ninguna?memoria "gastos generales". Probablemente será mejor que su propio enfoque personalizado basado en diccionario o incluso una solución basada en db_row.
Introducción detallada de. Objeto de fila
p>clase?sqlite3.Row
¿Una?instancia?de?fila?sirve?como?una?factoría?de?filas?altamente?optimizada?para?objetos?de?conexión.? intenta?imitar?una?tupla?en?la?mayoría?de?sus?características.
Admite?mapeo?acceso?por?nombre?de?columna?e?índice,?iteración?y?representación? ,?pruebas de igualdad? y?len().
Si?dos?objetos?de?fila?tienen?exactamente?las?mismas?columnas?y?sus?miembros?son?iguales,? comparar?igual. p>
¿Cambiado?en?versión?2.6:?Se agregó?iteración?e?igualdad?(hashability).
claves()
Esto El método devuelve una tupla de nombres de columnas. Inmediatamente después de una consulta, es el primer miembro de cada tupla en la descripción del cursor.
¿Nuevo?en?versión?2.6.
El siguiente es un ejemplo
En?[30]:?cx.row_factory?=?sqlite3.Row
En?[31 ]:?c?=?cx.cursor()
En?[32]:?c.execute('select?*?from?catalog') p>
Salida[32 ]:?
Entrada?[33]:?r?=?c.fetchone()
Entrada[34]: ?type(r)
Salida[34]:?
Entrada?[35]:?r
Salida [35]:?
Entrada?[36]:?print?r
(0 ,?10,?u'\ u9c7c',?u'Yu')
En?[37]:?len(r)
Fuera[37]:?4
¿Entrar? [39]:?r[2]#Usar consulta de índice
Salir[39]:?u'\u9c7c'
Entrar?[41 ]:?r.keys()
Fuera[41]:?['id',?'pid',?'nombre',?'apodo']
¿En? [42]: ?para?e ?en
?r:
....:?print?e,
....:?
0?10?鱼?Yu Usar columnas Palabra clave consulta
¿Entrada?[43]:?r['id']
Salida[43]:?0
Entrada?[44]: ?r ['nombre']
Fuera[44]:?u'\u9c7c'