Se recomienda pasar por SQL usando Python | Establecer 1 y SQL usando Python y SQLite | conjunto 2
En los artículos anteriores los registros de la base de datos se limitaban a tamaño pequeño y tupla única. Este artículo explicará cómo escribir y obtener grandes datos de la base de datos usando el módulo SQLite3 que cubre todas las excepciones.
Una forma simple es ejecutar la consulta y usar fetchall(). Esto ya se ha discutido en el SET 1.
- executescript()
Este es un método práctico para ejecutar varias sentencias SQL a la vez. Ejecuta el script SQL que obtiene como parámetro.Syntax:sqlite3.connect.executescript(script)
import
sqlite3
# Connection with the DataBase
# 'library.db'
connection
=
sqlite3.connect(
"library.db"
)
cursor
=
connection.cursor()
# SQL piece of code Executed
# SQL piece of code Executed
cursor.executescript(
"""
CREATE TABLE people(
firstname,
lastname,
age
);
CREATE TABLE book(
title,
author,
published
);
INSERT INTO
book(title, author, published)
VALUES (
'Dan Clarke''s GFG Detective Agency',
'Sean Simpsons',
1987
);
"""
)
sql
=
"""
SELECT COUNT(*) FROM book;"""
cursor.execute(sql)
# The output in fetched and returned
# as a List by fetchall()
result
=
cursor.fetchall()
print
(result)
sql
=
"""
SELECT * FROM book;"""
cursor.execute(sql)
result
=
cursor.fetchall()
print
(result)
# Changes saved into database
connection.commit()
# Connection closed(broken)
# with DataBase
connection.close()
Producción:
[(1,)] [("Dan Clarke's GFG Detective Agency", 'Sean Simpsons', 1987)]
Nota: Es posible que este fragmento de código no funcione en intérpretes en línea, debido a los privilegios de permiso para crear/escribir una base de datos.
- ejecutar muchos()
Suele ser el caso cuando se debe insertar una gran cantidad de datos en la base de datos desde archivos de datos (para un caso más simple, tome listas, arrays). Sería simple iterar el código muchas veces que escribir cada vez, cada línea en la base de datos. Pero el uso de bucle no sería adecuado en este caso, el siguiente ejemplo muestra por qué. La sintaxis y el uso de executemany() se explican a continuación y cómo se puede usar como un bucle.import
sqlite3
# Connection with the DataBase
# 'library.db'
connection
=
sqlite3.connect(
"library.db"
)
cursor
=
connection.cursor()
# SQL piece of code Executed
cursor.execute(
"""
CREATE TABLE book(
title,
author,
published);"""
)
List
=
[(
'A'
,
'B'
,
2008
), (
'C'
,
'D'
,
2008
),
(
'E'
,
'F'
,
2010
)]
connection. executemany(
"""
INSERT INTO
book(title, author, published)
VALUES (?, ?, ?)"""
,
List
)
sql
=
"""
SELECT * FROM book;"""
cursor.execute(sql)
result
=
cursor.fetchall()
for
x
in
result:
print
(x)
# Changes saved into database
connection.commit()
# Connection closed(broken)
# with DataBase
connection.close()
Producción:
Traceback (most recent call last): File "C:/Users/GFG/Desktop/SQLITE3.py", line 16, in List[2][3] =[['A', 'B', 2008], ['C', 'D', 2008], ['E', 'F', 2010]] NameError: name 'List' is not defined
El uso de executemany() puede hacer que la pieza de código sea funcional.
import
sqlite3
# Connection with the DataBase
# 'library.db'
connection
=
sqlite3.connect(
"library.db"
)
cursor
=
connection.cursor()
# SQL piece of code Executed
cursor.execute(
"""
CREATE TABLE book(
title,
author,
published);"""
)
List
=
[(
'A'
,
'B'
,
2008
), (
'C'
,
'D'
,
2008
),
(
'E'
,
'F'
,
2010
)]
connection. executemany(
"""
INSERT INTO
book(title, author, published)
VALUES (?, ?, ?)"""
,
List
)
sql
=
"""
SELECT * FROM book;"""
cursor.execute(sql)
result
=
cursor.fetchall()
for
x
in
result:
print
(x)
# Changes saved into database
connection.commit()
# Connection closed(broken)
# with DataBase
connection.close()
Producción:
('A', 'B', 2008) ('C', 'D', 2008) ('E', 'F', 2010)
- Obtener datos grandes
import
sqlite3
# Connection created with the
# database using sqlite3.connect()
connection
=
sqlite3.connect(
"company.db"
)
cursor
=
connection.cursor()
# Create Table command executed
sql
=
"""
CREATE TABLE employee (
ID INTEGER PRIMARY KEY,
fname VARCHAR(20),
lname VARCHAR(30),
gender CHAR(1),
dob DATE);"""
cursor.execute(sql)
# Single Tuple inserted
sql
=
"""
INSERT INTO employee
VALUES (1007, "Will", "Olsen", "M", "24-SEP-1865");"""
cursor.execute(sql)
# Multiple Rows inserted
List
=
[(
1008
,
'Rkb'
,
'Boss'
,
'M'
,
"27-NOV-1864"
),
(
1098
,
'Sak'
,
'Rose'
,
'F'
,
"27-DEC-1864"
),
(
1908
,
'Royal'
,
'Bassen'
,
"F"
,
"17-NOV-1894"
)]
connection. executemany(
"INSERT INTO employee VALUES (?, ?, ?, ?, ?)"
,
List
)
print
(
"Method-1\n"
)
# Multiple Rows fetched from
# the Database
for
row
in
connection.execute(
'SELECT * FROM employee ORDER BY ID'
):
print
(row)
print
(
"\nMethod-2\n"
)
# Method-2 to fetch multiple
# rows
sql
=
"""
SELECT * FROM employee ORDER BY ID;"""
cursor.execute(sql)
result
=
cursor.fetchall()
for
x
in
result:
print
(x)
connection.commit()
connection.close()
Producción:
Method-1 (1007, 'Will', 'Olsen', 'M', '24-SEP-1865') (1008, 'Rkb', 'Boss', 'M', '27-NOV-1864') (1098, 'Sak', 'Rose', 'F', '27-DEC-1864') (1908, 'Royal', 'Bassen', 'F', '17-NOV-1894') Method-2 (1007, 'Will', 'Olsen', 'M', '24-SEP-1865') (1008, 'Rkb', 'Boss', 'M', '27-NOV-1864') (1098, 'Sak', 'Rose', 'F', '27-DEC-1864') (1908, 'Royal', 'Bassen', 'F', '17-NOV-1894')
Nota: Es posible que este fragmento de código no funcione en intérpretes en línea, debido a los privilegios de permiso para crear/escribir una base de datos.
Publicación traducida automáticamente
Artículo escrito por piyushdoorwar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA