Skip to main content
deleted 12 characters in body
Source Link
funnydman
  • 11.8k
  • 4
  • 51
  • 67

I've fixed some mistakes and cleaned this up a bit:

conn = sqlite3.connect("favorites8.db")

db = conn.cursor()

db.execute("CREATE TABLE shows (id INTEGER AUTONOT INCREMENTNULL PRIMARY KEY, title TEXT NOT NULL, PRIMARY KEY (id))")

db.execute("CREATE TABLE genres (shows_id INTEGER, genre TEXT NOT NULL, FOREIGN KEY (shows_id) REFERENCES shows(id))")

with open("favorites.csv", "r") as file:
    reader = csv.DictReader(file)
    for row in reader:
        title = row["title"].strip().upper()

        stmnt1 = "INSERT INTO shows (title) VALUES(?)"
        db.execute(stmnt1, (title,))
        show_id = db.lastrowid

        # Insert genres
        data = []
        stmnt2 = "INSERT INTO genres (shows_id, genre) VALUES(?, ?)"
        for genre in row["genres"].split(", "):
            data.append((show_id, genre))

        db.executemany(stmnt2, data)
    # commit changes
    conn.commit()
    conn.close()

There were a bunch of issues:

  1. executemany accepts iterable as a second argument.
  2. First execute statement does not return id, but cursor object, you need to retrieve it manually.

I've fixed some mistakes and cleaned this up a bit:

conn = sqlite3.connect("favorites8.db")

db = conn.cursor()

db.execute("CREATE TABLE shows (id INTEGER AUTO INCREMENT, title TEXT NOT NULL, PRIMARY KEY (id))")

db.execute("CREATE TABLE genres (shows_id INTEGER, genre TEXT NOT NULL, FOREIGN KEY (shows_id) REFERENCES shows(id))")

with open("favorites.csv", "r") as file:
    reader = csv.DictReader(file)
    for row in reader:
        title = row["title"].strip().upper()

        stmnt1 = "INSERT INTO shows (title) VALUES(?)"
        db.execute(stmnt1, (title,))
        show_id = db.lastrowid

        # Insert genres
        data = []
        stmnt2 = "INSERT INTO genres (shows_id, genre) VALUES(?, ?)"
        for genre in row["genres"].split(", "):
            data.append((show_id, genre))

        db.executemany(stmnt2, data)
    # commit changes
    conn.commit()
    conn.close()

There were a bunch of issues:

  1. executemany accepts iterable as a second argument.
  2. First execute statement does not return id, but cursor object, you need to retrieve it manually.

I've fixed some mistakes and cleaned this up a bit:

conn = sqlite3.connect("favorites8.db")

db = conn.cursor()

db.execute("CREATE TABLE shows (id INTEGER NOT NULL PRIMARY KEY, title TEXT NOT NULL)")

db.execute("CREATE TABLE genres (shows_id INTEGER, genre TEXT NOT NULL, FOREIGN KEY (shows_id) REFERENCES shows(id))")

with open("favorites.csv", "r") as file:
    reader = csv.DictReader(file)
    for row in reader:
        title = row["title"].strip().upper()

        stmnt1 = "INSERT INTO shows (title) VALUES(?)"
        db.execute(stmnt1, (title,))
        show_id = db.lastrowid

        # Insert genres
        data = []
        stmnt2 = "INSERT INTO genres (shows_id, genre) VALUES(?, ?)"
        for genre in row["genres"].split(", "):
            data.append((show_id, genre))

        db.executemany(stmnt2, data)
    # commit changes
    conn.commit()
    conn.close()

There were a bunch of issues:

  1. executemany accepts iterable as a second argument.
  2. First execute statement does not return id, but cursor object, you need to retrieve it manually.
deleted 23 characters in body
Source Link
funnydman
  • 11.8k
  • 4
  • 51
  • 67

I've fixed some mistakes and cleaned this up a bit:

conn = sqlite3.connect("favorites8.db")

db = conn.cursor()

db.execute("CREATE TABLE shows (id INTEGER AUTO INCREMENT, title TEXT NOT NULL, PRIMARY KEY (id))")

db.execute("CREATE TABLE genres (shows_id INTEGER, genre TEXT NOT NULL, FOREIGN KEY (shows_id) REFERENCES shows(id))")

with open("favorites.csv", "r") as file:
    reader = csv.DictReader(file)
    for row in reader:
        title = row["title"].strip().upper()

        stmnt1 = "INSERT INTO shows (title) VALUES(?)"
        db.execute(stmnt1, (title,))
        show_id = db.lastrowid
        conn.commit()

        # Insert genres
        data = []
        stmnt2 = "INSERT INTO genres (shows_id, genre) VALUES(?, ?)"
        for genre in row["genres"].split(", "):
            data.append((show_id, genre))

        db.executemany(stmnt2, data)
    # commit changes
    conn.commit()
    conn.close()

There were a bunch of issues:

  1. executemany accepts iterable as a second argument.
  2. First execute statement does not return id, but cursor object, you need to retrieve it manually.

I've fixed some mistakes and cleaned this up a bit:

conn = sqlite3.connect("favorites8.db")

db = conn.cursor()

db.execute("CREATE TABLE shows (id INTEGER AUTO INCREMENT, title TEXT NOT NULL, PRIMARY KEY (id))")

db.execute("CREATE TABLE genres (shows_id INTEGER, genre TEXT NOT NULL, FOREIGN KEY (shows_id) REFERENCES shows(id))")

with open("favorites.csv", "r") as file:
    reader = csv.DictReader(file)
    for row in reader:
        title = row["title"].strip().upper()

        stmnt1 = "INSERT INTO shows (title) VALUES(?)"
        db.execute(stmnt1, (title,))
        show_id = db.lastrowid
        conn.commit()

        # Insert genres
        data = []
        stmnt2 = "INSERT INTO genres (shows_id, genre) VALUES(?, ?)"
        for genre in row["genres"].split(", "):
            data.append((show_id, genre))

        db.executemany(stmnt2, data)
    # commit changes
    conn.commit()
    conn.close()

There were a bunch of issues:

  1. executemany accepts iterable as a second argument.
  2. First execute statement does not return id, but cursor object, you need to retrieve it manually.

I've fixed some mistakes and cleaned this up a bit:

conn = sqlite3.connect("favorites8.db")

db = conn.cursor()

db.execute("CREATE TABLE shows (id INTEGER AUTO INCREMENT, title TEXT NOT NULL, PRIMARY KEY (id))")

db.execute("CREATE TABLE genres (shows_id INTEGER, genre TEXT NOT NULL, FOREIGN KEY (shows_id) REFERENCES shows(id))")

with open("favorites.csv", "r") as file:
    reader = csv.DictReader(file)
    for row in reader:
        title = row["title"].strip().upper()

        stmnt1 = "INSERT INTO shows (title) VALUES(?)"
        db.execute(stmnt1, (title,))
        show_id = db.lastrowid

        # Insert genres
        data = []
        stmnt2 = "INSERT INTO genres (shows_id, genre) VALUES(?, ?)"
        for genre in row["genres"].split(", "):
            data.append((show_id, genre))

        db.executemany(stmnt2, data)
    # commit changes
    conn.commit()
    conn.close()

There were a bunch of issues:

  1. executemany accepts iterable as a second argument.
  2. First execute statement does not return id, but cursor object, you need to retrieve it manually.
Source Link
funnydman
  • 11.8k
  • 4
  • 51
  • 67

I've fixed some mistakes and cleaned this up a bit:

conn = sqlite3.connect("favorites8.db")

db = conn.cursor()

db.execute("CREATE TABLE shows (id INTEGER AUTO INCREMENT, title TEXT NOT NULL, PRIMARY KEY (id))")

db.execute("CREATE TABLE genres (shows_id INTEGER, genre TEXT NOT NULL, FOREIGN KEY (shows_id) REFERENCES shows(id))")

with open("favorites.csv", "r") as file:
    reader = csv.DictReader(file)
    for row in reader:
        title = row["title"].strip().upper()

        stmnt1 = "INSERT INTO shows (title) VALUES(?)"
        db.execute(stmnt1, (title,))
        show_id = db.lastrowid
        conn.commit()

        # Insert genres
        data = []
        stmnt2 = "INSERT INTO genres (shows_id, genre) VALUES(?, ?)"
        for genre in row["genres"].split(", "):
            data.append((show_id, genre))

        db.executemany(stmnt2, data)
    # commit changes
    conn.commit()
    conn.close()

There were a bunch of issues:

  1. executemany accepts iterable as a second argument.
  2. First execute statement does not return id, but cursor object, you need to retrieve it manually.