SQL usando Python | Conjunto 3 (Manejo de datos grandes)

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *