Home > Back-end >  SQLlite: Why is the insert SQL statement not updating the table in the database?
SQLlite: Why is the insert SQL statement not updating the table in the database?

Time:02-04

I have a Python Pysimplegui form that is connecting to a SQL Lite database.

The function to create and update a table called fitness_class is:

def createFitnessClassTable(conn):
    '''

    '''
    SQL = """CREATE TABLE IF NOT EXISTS fitness_class (
            fitness_class_id integer PRIMARY KEY, 
            fitness_class_name text NOT NULL,
            date_and_time text NOT NULL     
        );"""
    sql_create = """INSERT OR IGNORE INTO fitness_class(fitness_class_id,fitness_class_name,date_and_time)
    VALUES(?,?,?)"""
    data = [
        (1, 'Cardio', 'Thursday 35pm'),
        (2, 'Pilates', 'Friday 911am'),
        (3, 'Spin', 'Monday 2 4pm')
    ]
    try:
        c = conn.cursor()
        c.execute(SQL)
        c.close()
        connection = conn.cursor()
        connection.executemany(sql_create, data)

        connection.close()

    except Error as e:
        # print(e)
        sg.Popup(e)
        return False

    return True

When the function is called, this is creating the table and I am not getting any error messages. However, this is not saving the data (from the insert statement) either. These are the rows related to calling the function

#!/usr/bin/python
import os
import PySimpleGUI as sg
from tkinter import *
import re
import sys
import PySimpleGUI as sg
import sqlite3

sys.path.append(os.path.dirname(__file__))
conn = dbconnect()
createFitnessClassTable(conn=conn)
conn.commit
conn.close()

I am confused because I have a similar function to create another table which is working correctly (i.e. creating the table if it doesn't exist and populating it with the data):

def createMembershipTable(conn):
    '''

    '''
    SQL = """
        CREATE TABLE IF NOT EXISTS membership (
            membership_type_id integer PRIMARY KEY, 
            membership_type text NOT NULL,
            weekly_amount real NOT NULL     
        );"""

    sql_create = """INSERT OR IGNORE INTO membership(membership_type_id,membership_type,weekly_amount)
    VALUES(?,?,?)"""
    data = [(1, 'Basic', 10.00),
            (2, 'Regular', 15.00),
            (3, 'Premium', 20.00)

            ]

    try:
        c = conn.cursor()
        c.execute(SQL)
        c.close()
        connection = conn.cursor()
        connection.executemany(sql_create, data)
        connection.close()
    except Error as e:
        print(e)
        return False
    return True

The lines to call that function:

 conn = dbconnect()
 createMembershipTable(conn)
 conn.commit()
 conn.close()

What am I missing? Why would the function createMembershipTable work as expected though the function createFitnessClassTable not work when they are both almost identical?

CodePudding user response:

Just after posting (and 3 hours later), I realized the issue: It was missing parenthesis after the conn.commit() in the createFitnessClassTable function call.

  • Related