>>> import sqlalchemy as sa
>>> import numpy as np
>>> import time, datetime
>>> import urllib
преобразования в и из форматов даты.
>>> datestr2timestamp = lambda d: time.mktime(time.strptime(d,"%Y-%m-%d"))
>>> def npvector_to_sadict(vector):
... row = dict(zip(("open", "high", "low", "close", "volume", "adj_close"),
... vector[1:]))
... row['date'] = datetime.date.fromtimestamp(vector[0])
... return row
...
Загрузка данных из сетевого ресурса:
>>> url = "http://ichart.yahoo.com/table.csv?a=2&c=2011&b=30&e=7&d=7&g=d&f=2011&s=msft&ignore=.csv"
>>> f = urllib.urlopen(url)
>>> title = f.readline().strip().split(",")
>>> data = np.loadtxt(f, dtype=np.float, delimiter=",", converters={0: datestr2timestamp})
определяет, как выглядит таблица базы данных
>>> metadata = sa.MetaData()
>>> stockdata = sa.Table('stockdata', metadata,
... sa.Column('date', sa.Date),
... sa.Column('open', sa.Float),
... sa.Column('high', sa.Float),
... sa.Column('low', sa.Float),
... sa.Column('close', sa.Float),
... sa.Column('volume', sa.Float),
... sa.Column('adj_close', sa.Float))
подключиться к базе данных.Вы можете изменить это значение на mysql://user:password@host/
для баз данных mysql
>>> engine = sa.create_engine("sqlite:///:memory:")
только для демонстрации, пропустите это, если у вас уже есть созданная таблица.
>>> metadata.create_all(engine)
вставьте данные в базу данных:
>>> engine.execute(stockdata.insert(), [npvector_to_sadict(datum) for datum in data])
<sqlalchemy.engine.base.ResultProxy object at 0x23ea150>
убедитесь, что он был вставлен
>>> print data.shape[0], engine.execute(sa.select([sa.func.count(stockdata.c.close)])).scalar()
90 90
>>>