2017-04-24 59 views
1

我知道这是一个愚蠢的问题,但你是如何更新一列通过匹配它的关键在sqlite,我试着这个方法,但我一直没有得到匹配,我知道键应该匹配,因为我从数据库中获得它们。我究竟做错了什么?更新Sqlite3 colomn,键匹配问题

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

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

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

非常感谢!这样一个愚蠢的事情被抓住 – kopo222

+0

你非常欢迎。快乐的编码给你:-) – bernie