【问题标题】:how to fix python sqlite data base not storing the data如何修复python sqlite数据库不存储数据
【发布时间】:2019-01-15 14:56:20
【问题描述】:

我的代码将仅存储数据“长号”和按钮单击的第一个“x”值,但是一旦再次单击按钮,它将不会将 x 的当前值替换为正确的值输出应该是 2

import sqlite3
import tkinter as tk
from tkinter import *

connecter = sqlite3.connect('IAworker.db')
c = connecter.cursor()

def create_security():
    c.execute('CREATE TABLE IF NOT EXISTS security(username TEXT, password INT, teacherID INT, studentID INT, instrumentID INT)')
def create_Teacher_Info():
    c.execute('CREATE TABLE IF NOT EXISTS teacher_info(teacherName TEXT, teacherID INT PRIMARY KEY)')

def create_Student_Info():
    c.execute(
        'CREATE TABLE IF NOT EXISTS student_info(Form TEXT, studentID INT PRIMARY KEY, studentName TEXT)')

def create_Instrument_Info():
    c.execute('CREATE TABLE IF NOT EXISTS instrument_info( instrumentName TEXT, instrumentID INT PRIMARY KEY)')
    c.close
create_security()
create_Teacher_Info()
create_Student_Info()
create_Instrument_Info()

def inserterInstTest(name, instID):
     c = connecter.cursor()
     c.execute('SELECT * FROM instrument_info')
     [print(row) for row in c.fetchall()]
     c.execute('INSERT OR REPLACE INTO instrument_info (instrumentName, instrumentID) VALUES (?, ?)', (name, instID))
     # c.execute('UPDATE instrument_info SET instrumentName = (?) WHERE instrumentID = (?)', (name, instID))

     connecter.commit()
     c.close()
     connecter.close


butt4 = tk.Button(root3_2, text="trombone+1",)#instrument buttons
                butt4.grid(row=6, column=1, columnspan=3)#placement on window for buttons



def buttonClick3(x): #commands for buttons
                    print('button was clicked')
                    tromName = 'trombone'
                    x = x + 1
                    x = str(x)
                    print('days read =',x)
                    SqliteIA.inserterInstTest(tromName,x)
                butt4.config(command=buttonClick3(trombones2))#configuring button commands


SQLiteIA.InserterInstTest(tromName, x) was used to call the function as its in another py file. but the code should replace the current 

【问题讨论】:

  • 您是否检查过您的代码是否正确递增xdays read = 行中代码的输出是什么?我会假设您的代码永远不会正确地重新配置 buttonClick3 命令以接受一个值。

标签: python-3.x tkinter sqlite


【解决方案1】:

您在函数内部递增 x,它是不可变的。

考虑下面的代码

def buttonClick(x):
    x = x + 1
    print "X = " + str(x)
    return

x = 0

buttonClick(x)
buttonClick(x)
buttonClick(x)

结果

X = 1
X = 1
X = 1

See this answer for an explanation of immutable vs mutable

Here is a way around that

def buttonClick(x):
    x[0] = x[0] + 1
    print "X = " + str(x[0])
    return

x = [0]

buttonClick(x)
buttonClick(x)
buttonClick(x)

结果

X = 1
X = 2
X = 3

【讨论】:

    猜你喜欢
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 2022-12-23
    • 2016-10-10
    • 2021-09-30
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多