Как я могу сделать SQL-код в моем коде Python регулируемым? - PullRequest
0 голосов
/ 18 февраля 2019

Привет всем, мне было интересно, возможно ли сделать код 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код, чтобы я мог нарезать базу данных по своему усмотрению?

Надеюсь, я объяснил проблему достаточно хорошо, чтобы она была понятной.Я новичок, поэтому, пожалуйста, дайте мне знать, если вам нужна дополнительная информация, чтобы ответить на вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...