Контекст: У меня есть большой проект, в котором пользователь вводит свое имя, а затем в конце сеанса его имени присваивается оценка с использованием метода INSERT INTO
. Обратите внимание, что я использую PyGame для всего проекта, если это повлияет на решение.
Вопрос: Мне нужен способ, возможно, с использованием функции, вызываемой в конце сеанс, чтобы взять первые 5 баллов (например, таблицу лидеров), которые взяты из таблицы баллов, и сохранить их в переменной (возможно, в словаре?), и тогда я мог бы отобразить эти баллы пользователю. Что вы можете использовать в pyodb c, чтобы взять переменные и сохранить их в переменной?
Дополнительная информация и код:
Вот моя функция для сохранения переменные в базе данных:
def TableScore(self):
conn = pyodbc.connect('Driver={SQL Server};'
'Server=[Redacted]\[Redacted];'
'Database=Highscore;'
'Trusted_Connection=yes;')
cursor = conn.cursor()
cursor.execute('SELECT * FROM Highscore.dbo.Highscores')
cursor.execute('''
INSERT INTO Highscore.dbo.Highscores (Name, Scores)
VALUES
(?,?)
''',(self.PlayerName, self.score)
)
conn.commit()
А вот функция, которую я буду использовать для отображения результатов и вызова функции, которая сохраняет результаты в базе данных:
def show_go_screen(self):
#Welcome screen
if not self.running:
return
self.image = pg.image.load('WallPaper.png')
self.screen.blit(self.image, (0, 0))
self.draw_text("You died!", 48, White, Width /2, Height / 4)
self.draw_text("Score: " + str(self.score), 22, White, Width / 2, Height / 2)
self.draw_text("Press any key to restart", 22, White, Width / 2, Height * 3/4)
if self.score > self.highscore:
self.highscore = self.score
self.draw_text("New Highscore!", 22, White, Width / 2, Height / 2 + 40)
with open(path.join(self.dir, HS_File), 'w') as f:
f.write(str(self.score))
self.TableScore() #Calls saving to database function
else:
self.draw_text("Highscore: " + str(self.highscore), 22, White, Width / 2, Height / 2 + 40)
pg.display.flip()
self.wait_for_key() #Waiting for user input to start new game.
Я надеюсь, что это достаточно информации, если вам нужно больше, чтобы ответить, я буду рад держать это в курсе!
Спасибо!