Mi script se ejecuta y no recibo ningún error, pero mi student.db siempre está vacío. Todos mis comandos de impresión para la depuración parecen imprimir el contenido del csv. Supongo que podría insertarse, pero no puedo encontrar un problema con él. Mi código está a continuación, junto con lo que veo cuando intento ver la base de datos a través del CS50IDE. Gracias de antemano por cualquier ayuda.

import cs50
import csv
from sys import argv, exit

#if len(argv) != 2:
#    print("Usage: python import.py characters.csv")
#    exit(1)

# connect to db
db = cs50.SQL("sqlite:///students.db")


# iterate through the csv file
with open("characters.csv", "r") as file:
    reader = csv.DictReader(file)
    for row in reader:
        middle = ""
        names = row["name"].split()

        firstname = names[0]
        if len(names) == 2:
            middle = ""
            lastname = names[1]
        else:
            middle = names[1]
            lastname = names[2]

        house = row["house"]
        birth = row["birth"]

        print(firstname)
        print(middle)
        print(lastname)
        print(row["house"])
        print(row["birth"])

        db.execute("INSERT INTO students (first, middle, last, house, birth) VALUES(?, ?, ?, ?, ?)", firstname, middle, lastname, house, birth)

Intentando ver la base de datos en el IDE

~/pset7/houses/ $ sqlite3 students.db
SQLite version 3.22.0 2018-01-22 18:45:57
Enter ".help" for usage hints.
sqlite> .schema
CREATE TABLE students (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    first VARCHAR(255),
    middle VARCHAR(255),
    last VARCHAR(255),
    house VARCHAR(10),
    birth INTEGER
);
CREATE TABLE sqlite_sequence(name,seq);
sqlite> select * from students
   ...> 
-1
Dave 30 ago. 2020 a las 19:10

1 respuesta

La mejor respuesta

Probablemente se deba a que olvidó poner un punto y coma (;) al final de su instrucción SELECT.

En su lugar, intente esto: SELECT * FROM estudiantes;

0
JohnnyPro 31 ago. 2020 a las 14:11