我有一个连接到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
当调用函数时,这是在创建表,我没有收到任何错误消息。但是,这也没有保存数据(来自insert语句)。
#!/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在两者几乎相同的情况下不工作?
1条答案
按热度按时间t9aqgxwy1#
我觉得自己像个白痴。刚发完帖子(之前浪费了3个小时),我就意识到了这个问题:createFitnessClassTable函数调用中的conn.commit**()**后缺少括号。