Запись переменной в базу данных Python

Всем привет. Реализовал простую игру типа Cookie Clicker на Python. Вот ее код целиком:

from tkinter import *
from PIL import ImageTk, Image
import threading
from tkinter import messagebox
import time
from tkinter import PhotoImage
from tkinter import ttk
#---------------------------------------------------------------------------

cookies = 0

root = Tk()
root.title("Cookie Clicker")
root.resizable()
root.resizable(width=False, height=False)
root.iconphoto(True, PhotoImage(file='icon.png'))
root.configure(bg="white")

tabControl = ttk.Notebook(root)
cookieTab = ttk.Frame(tabControl)
shopTab = ttk.Frame(tabControl)
tabControl.add(cookieTab, text="Cookie")
tabControl.add(shopTab, text="Shop")
tabControl.grid(row=0, column=0, sticky="w")
#---------------------------------------------------------------------------

def bake():

    global cookies

    cookies += 1
    cookieCounter1.config(text=f"Cookies: {cookies}")
    cookieCounter2.config(text=f"Cookies: {cookies}")


#Granny

def newGranny():

    global cookies

    while True:
        time.sleep(1)
        cookies += 5
        cookieCounter1.config(text=f"Cookies: {cookies}")
        cookieCounter2.config(text=f"Cookies: {cookies}")

def addGranny():

    global cookies

    if cookies >= 100:

        gran = threading.Thread(target=newGranny)
        gran.setDaemon(True)
        gran.start()

        cookies -= 100


    else:
        messagebox.showinfo("Granny", "Sorry you don't have enough cookies to hire a granny")

#Clicker

def newClicker():

    global cookies

    while True:
        time.sleep(1)
        cookies += 1
        cookieCounter1.config(text=f"Cookies: {cookies}")
        cookieCounter2.config(text=f"Cookies: {cookies}")

def addClicker():

    global cookies

    if cookies >= 10:

        click = threading.Thread(target=newClicker)
        click.setDaemon(True)
        click.start()

        counter = create_counter()

        cookies -= 10 + counter()
        print(counter())


    else:
        messagebox.showinfo("Clicker", "Sorry you don't have enough cookies to make a clicker")

#rat

def newRat():

    global cookies

    while True:
        time.sleep(1)
        cookies += 10
        cookieCounter1.config(text=f"Cookies: {cookies}")
        cookieCounter2.config(text=f"Cookies: {cookies}")

def addRat():

    global cookies

    if cookies >= 1000:

        rats = threading.Thread(target=newRat)
        rats.setDaemon(True)
        rats.start()

        cookies -= 1000


    else:
        messagebox.showinfo("Rat", "Sorry you don't have enough cookies to buy a rat")

#mario

def newMario():

    global cookies

    while True:
        time.sleep(1)
        cookies += 100
        cookieCounter1.config(text=f"Cookies: {cookies}")
        cookieCounter2.config(text=f"Cookies: {cookies}")

def addMario():

    global cookies

    if cookies >= 10000:

        mariotime = threading.Thread(target=newMario)
        mariotime.setDaemon(True)
        mariotime.start()

        cookies -= 10000


    else:
        messagebox.showinfo("Mario", "Sorry you don't have enough cookies to hire a Mario")

#---------------------------------------------------------------------------

cookieTitle = Label(cookieTab, text="Cookie Clicker", font=("Arial", 24))
shopTitle = Label(shopTab, text="Shop", font=("Arial", 24))

cookieImg = ImageTk.PhotoImage(Image.open("cookie.png"))
cookieCliackable = Button(cookieTab, image = cookieImg, command = bake)

cookieCounter1 = Label(cookieTab, text=f"Cookies: {cookies}", font=("Arial", 12))
cookieCounter2 = Label(shopTab, text=f"Cookies: {cookies}", font=("Arial", 12))

grannyImg = Image.open("granny.jpg")
grannyImg = ImageTk.PhotoImage(grannyImg.resize((100, 100), Image.ANTIALIAS))
granny = Button(shopTab, image = grannyImg, command = addGranny, padx=5, pady=5)
grannyTitle = Label(shopTab, text="Granny: 100 Cookies", font=("Arial", 12), padx=5, pady=5)

clickerImg = Image.open("clicker.jpg")
clickerImg = ImageTk.PhotoImage(clickerImg.resize((100, 100), Image.ANTIALIAS))
clicker = Button(shopTab, image = clickerImg, command = addClicker, padx=5, pady=5)
clickerTitle = Label(shopTab, text="Clicker: 10 Cookies", font=("Arial", 12), padx=5, pady=5)

ratImg = Image.open("rat.png")
ratImg = ImageTk.PhotoImage(ratImg.resize((100, 100), Image.ANTIALIAS))
rat = Button(shopTab, image = ratImg, command = addRat, padx=5, pady=5)
ratTitle = Label(shopTab, text="Rat: 1000 Cookies", font=("Arial", 12), padx=5, pady=5)

marioImg = Image.open("mario.jpg")
marioImg = ImageTk.PhotoImage(marioImg.resize((100, 100), Image.ANTIALIAS))
mario = Button(shopTab, image = marioImg, command = addMario, padx=5, pady=5)
marioTitle = Label(shopTab, text="Mario: 10000 Cookies", font=("Arial", 12), padx=5, pady=5)

cookieTitle.grid(row=1, column=0)
cookieCliackable.grid(row=2, column=0)
cookieCounter1.grid(row=3, column=0)

shopTitle.grid(row=0, column=0, columnspan=2)

clickerTitle.grid(row=1, column=0)
clicker.grid(row=2, column=0)

grannyTitle.grid(row=3, column=0)
granny.grid(row=4, column=0)

ratTitle.grid(row=1, column=1)
rat.grid(row=2, column=1)

marioTitle.grid(row=3, column=1)
mario.grid(row=4, column=1)

cookieCounter2.grid(row=5, column=0, columnspan=2)


#---------------------------------------------------------------------------
root.mainloop()

Тут еще используется 6 изображений. Так вот, игра запускается и нормально функционирует, однако стало интересно, как можно прикрутить к этому всему базу данных, чтобы можно было в нее вносить переменную cookies для того, чтобы игра могла продолжаться с того же места после ее закрытия и нового открытия?


Ответы (1 шт):

Автор решения: Alisher Rusinov

Сделать json файлик с переменной/переменными которые тебе нужны и при каждом запуске/закрытии читать/сохранять данные.

→ Ссылка