我正努力從sqlalchemy的查詢創建迭代器。作爲迭代器的sqlachemy查詢的結果
這裏是我試過到目前爲止
創建一個表
from sqlalchemy import create_engine, Column, MetaData, Table , Integer, String
engine = create_engine('sqlite:///test90.db')
conn = engine.connect()
metadata = MetaData()
myTable = Table('myTable', metadata,
Column('Doc_id', Integer, primary_key=True),
Column('Doc_Text', String))
metadata.create_all(engine)
conn.execute(myTable.insert(), [{'Doc_id': 1, 'Doc_Text' : 'first sentence'},
{'Doc_id': 2, 'Doc_Text' : 'second sentence'},
{'Doc_id': 3, 'Doc_Text' : 'third sentence'},
{'Doc_id': 4, 'Doc_Text' : 'fourth sentence'}
])
我讀了迭代器盡我所能,但不明白這一點。 這裏的I類創建得到一個迭代器,但它不工作 (溢出,雖然我指定休息)
from sqlalchemy import create_engine
class RecordsIterator:
def __init__(self, xDB, xSQL):
self.engine = create_engine(xDB)
self.conn = self.engine.connect()
self.xResultCollection = self.conn.execute(xSQL)
def __iter__(self):
return self
def next (self):
while self.xResultCollection.closed is False:
xText = (self.xResultCollection.fetchone())[1]
xText = xText.encode('utf-8')
yield xText.split()
if not self.xResultCollection:
break
x1 = RecordsIterator(xDB = 'sqlite:///test91.db', xSQL = 'select * from myTable')
如果你想知道爲什麼我不只是使用發電機。 我需要養活的gensim.Word2Vec迭代器不幸的是,它並不需要一臺發電機
import gensim
gensim.models.Word2Vec(x1)
在此先感謝
謝謝。看編輯。 gensim不會接受它或我錯過了什麼? – user1043144
發佈了一個anser--正如我從快速瀏覽Word2Vec的源頭所看到的那樣,問題是生成器被明確禁止作爲'句子'參數。可能有一些我無法看到的原因,因爲它不應該真的有所作爲。也許它與C優化有關... – mata
謝謝。你的解決方案有效我認爲在gensim word2vec教程中存在一個問題http://rare-technologies.com/word2vec-tutorial/ – user1043144