2010-08-24 18 views
1

que je cherche à obtenir des prix de Yahoo en sqlite ... J'ai le code ci-dessous, mais ne peux pas obtenir les données dans ipull [] puis dans SQLite ...Obtenir des données dans SQLite de la finance Yahoo

from urllib import urlopen 
import win32com.client as win32 
import sqlite3 

RANGE = range(3, 8) 
COLS = ('TICKER', 'PRICE', 'Vol') 
URL = 'http://quote.yahoo.com/d/quotes.csv?s=%s&f=sl1v' 
TICKS = ('GGP', 'JPM', 'AIG', 'AMZN') 
ipull =[] 

def excel(): 
    app = 'Excel' 
    xl = win32.gencache.EnsureDispatch('%s.Application' % app) 
    ss = xl.Workbooks.Add() 
    sh = ss.ActiveSheet 
    xl.Visible = True 

    for x in range(3): 
     sh.Cells(5, x+1).Value = COLS[x] 
    row = 6 

    u = urlopen(URL % ','.join(TICKS)) 

    for data in u: 
     tick, price, per = data.split(',') 
     sh.Cells(row, 1).Value = eval(tick) 
     sh.Cells(row, 2).Value = ('%.2f' % float(price)) 
     sh.Cells(row, 3).Value = eval(per.rstrip()) 
     row += 1 
    u.close() 

con = sqlite3.connect('/py/data/db2') 
c = con.cursor() 

c.execute('INSERT INTO prices VALUES (?,?,?)', ipull) 

con.commit() 
c.close() 

if __name__=='__main__': 
    excel() 
+0

Quelle est l'erreur à laquelle vous faites face? – viksit

+0

'excel' ne semble pas mettre de données du tout dans' ipull', alors quel code pensez-vous pouvoir le faire? –

+0

D'abord, je suis un débutant à Python .... et dans la vie en général. J'ai utilisé un échantillon pour obtenir des données de Yahoo en Excel. cela a fonctionné assez pour construire plus tard ... Mais, je pars loin d'exceller. J'ai ajouté le code sqlite .. et suis resté coincé. Le "pour les données dans:" obtenir les données et le détient, puis tombe sur pour exceller. Comment puis-je obtenir les données de "pour les données dans:" en ipull ..... c'est la question alors (je pense) "pour row in ipull:" serait charger dans Sqlite. Ce serait vraiment bien si je pouvais charger à la fois sur Excel et en sqlite. Merci pour l'aide – Merlin

Répondre

1

Vous déclarez ipull[], mais ne l'attribuez jamais.