2014-10-13 3 views
0

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

Вот мой код. ! #/USR/бен/python3

import requests 
import sqlite3 
def get_info(url): 
    response = requests.get(url) 
    page = response.json() 
    name = page['name'] 
    category = page['category'] 
    link = page['link'] 
    location = page['location']['city'] 
    likes = page['likes'] 
    checkins = page['checkins'] 
    return name,category,link,location,likes,checkins 

def main(): 
    link = 'https://graph.facebook.com/Indiatoday' 
    p_name,p_cat,p_link,p_loc,p_likes,p_check = get_info(link) 
    print ('the page details are '+p_name,p_cat,p_link,p_loc,p_likes,p_check) 

db = sqlite3.connect('page.db') 
db.execute('''CREATE TABLE IF NOT EXISTS page_info (
      id INTEGER PRIMARY KEY, 
      name TEXT, 
      category TEXT, 
      link TEXT, 
      location TEXT, 
      likes INTEGER, 
      checking INTEGER)''') 
print ('table created successfully') 
db.execute('''INSERT INTO page_info (name, category, link, location, likes,Checking) VALUES(?,?,?,?,?,?)''',(p_name,p_cat,p_link,p_loc,p_likes,p_check)) 
db.commit() 

if __name__ == "__main__": main() 

Am получаю сообщение об ошибке «NameError: имя„p_name“не определен» было бы полезно, если бы кто-нибудь мог бы дайте мне знать, что я здесь делаю неправильно , Я знаю его простой переменной, определяющей, но я не смог найти его

ответ

0

Линия

db.execute('''INSERT INTO page_info (name, category, link, location, likes,Checking) VALUES(?,?,?,?,?,?)''',(p_name,p_cat,p_link,p_loc,p_likes,p_check)) 

выполняется перед любой из этих переменных были объявлены (так как это не отступом и поэтому не входит в main()). Я думаю, что вам нужно отступом весь блок:

def main(): 
    link = 'https://graph.facebook.com/Indiatoday' 
    p_name,p_cat,p_link,p_loc,p_likes,p_check = get_info(link) 
    print ('the page details are '+p_name,p_cat,p_link,p_loc,p_likes,p_check) 

    db = sqlite3.connect('page.db') 
    db.execute('''CREATE TABLE IF NOT EXISTS page_info (
       id INTEGER PRIMARY KEY, 
       name TEXT, 
       category TEXT, 
       link TEXT, 
       location TEXT, 
       likes INTEGER, 
       checking INTEGER)''') 
    print ('table created successfully') 
    db.execute('''INSERT INTO page_info (name, category, link, location, likes,Checking) VALUES(?,?,?,?,?,?)''',(p_name,p_cat,p_link,p_loc,p_likes,p_check)) 
    db.commit() 
+0

Это сработало! Но при вставке значений он дает мне сообщение об ошибке как «sqlite3.OperationalError: table page_info не имеет столбца с именем name». Что-то не так с командой вставки? –

+0

Не знаю. Кажется, стол должен иметь эту колонку. Я еще не работал с sqlite3, поэтому я не могу сказать правду. –

Смежные вопросы