Привет всем, мне было интересно, возможно ли сделать код SQL внутри кода Python регулируемым с помощью функции ввода?В настоящее время я пытаюсь этот код:
import sqlite3
conn = sqlite3.connect('season.sqlite')
cur = conn.cursor()
season_number = input('Enter season id:')
sqlstr = '''SELECT a.home_team AS team_name, a.Points+b.Points as Points
FROM(
SELECT DISTINCT t.name AS home_team, s.name, SUM(CASE
WHEN substr(m.result,1,1) > substr(m.result,-1,1) THEN '3'
WHEN substr(m.result,1,1) < substr(m.result,-1,1) THEN '0'
WHEN substr(m.result,1,1) = substr(m.result,-1,1) THEN '1'
END) AS Points
FROM Match m JOIN Team t
ON t.id=home_team_id
JOIN Season s
ON s.id = m.season_id
WHERE season_id = season_number
GROUP BY t.name
ORDER BY Points DESC) AS a
JOIN(SELECT DISTINCT t.name AS guest_team, s.name, SUM(CASE
WHEN substr(m.result,1,1) < substr(m.result,-1,1) THEN '3'
WHEN substr(m.result,1,1) > substr(m.result,-1,1) THEN '0'
WHEN substr(m.result,1,1) = substr(m.result,-1,1) THEN '1'
END) AS Points
FROM Match m JOIN Team t
ON t.id=guest_team_id
JOIN Season s
ON s.id = m.season_id
WHERE season_id = season_number
GROUP BY t.name
ORDER BY Points DESC) AS b
ON a.home_team=b.guest_team
ORDER BY Points DESC'''
cur.execute(sqlstr)
result = cur.fetchall()
for r in result:
print(r)
Но, очевидно, я получаю ошибку:
Traceback (most recent call last):
File "analysis.py", line 38, in <module>
cur.execute(sqlstr)
sqlite3.OperationalError: no such column: season_number
Так что мне было интересно, есть ли способ включить эту функцию ввода в SQLкод, чтобы я мог нарезать базу данных по своему усмотрению?
Надеюсь, я объяснил проблему достаточно хорошо, чтобы она была понятной.Я новичок, поэтому, пожалуйста, дайте мне знать, если вам нужна дополнительная информация, чтобы ответить на вопрос.