Red de conocimiento informático - Problemas con los teléfonos móviles - Programación con Tkinter GUI en Python

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?sqlite3

2. ¿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

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

....:?

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.

¿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')

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'