更新Sqlite3 colomn,密钥匹配问题

时间:2017-04-24 17:01:17

标签: sql python-3.x sqlite

我知道这是一个愚蠢的问题,但是你是如何通过将它与sqlite中的键匹配来更新列的,我正在尝试这种方法但是我一直没有匹配,我知道键应该匹配因为我从数据库中获取它们。我做错了什么?

c.execute('''SELECT ROUND(AVG(ft.score), 2), st.subreddit_id
         FROM posts as ft JOIN subreddits as st ON st.subreddit_id == ft.subreddit_id
         GROUP BY 2
         ORDER BY 2 desc
         ''')

average = []
for rows in c.fetchall():
    average.append(rows)

for index in average:
    start = time.time()
    print(index)
    try:
         c.execute('''UPDATE subreddits SET average_score = ''' + str(index[0]) + ''' WHERE ''' + str(index[1]) + ''' == subreddit_id;''')
         print(str(index[1]))
    except sqlite3.OperationalError:
        print('{} not found'.format(index))

1 个答案:

答案 0 :(得分:1)

您应该将参数作为第二个参数传递给.execute(),以允许sqlite3进行正确的转义。您还遇到语法错误==。试试这个:

c.execute('''UPDATE subreddits 
             SET average_score = ? WHERE ? = subreddit_id;''', (index[0],index[1]))