【问题标题】:SQLlite: Why is the insert SQL statement not updating the table in the database?SQLite:为什么插入 SQL 语句不更新数据库中的表?
【发布时间】:2023-02-04 05:21:33
【问题描述】:

我有一个连接到 SQL Lite 数据库的 Python Pysimplegui 表单。

创建和更新名为 fitness_class 的表的函数是:

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

调用该函数时,这是在创建表,我没有收到任何错误消息。但是,这也没有保存数据(来自插入语句)。 这些是与调用函数相关的行

#!/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()

我很困惑,因为我有一个类似的功能来创建另一个正常工作的表(即如果表不存在则创建表并用数据填充它):

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

调用该函数的行:

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

我错过了什么?为什么函数 createMembershipTable 会按预期工作,尽管函数 createFitnessClassTable 在它们几乎相同时不起作用?

【问题讨论】:

    标签: sqlite


    【解决方案1】:

    我觉得自己像个白痴。在发布之后(并且浪费了 3 个小时),我意识到了这个问题: conn.commit 后缺少括号()在 createFitnessClassTable 函数调用中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-15
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 1970-01-01
      • 2011-02-16
      相关资源
      最近更新 更多