Я не могу полностью окутать голову генераторам, иногда я использую их правильно, а иногда и нет.Реализация генераторов для заполнения базы данных
Я заселять БД из файла .csv:
name, location
Tom, France
Doug, USA
Michael, UK
Вот мой код:
def process_csv(filecsv):
f = open(filecsv)
f_csv = csv.reader(f)
headers = next(f_csv)
User = namedtuple('User', headers)
for user in f_csv:
user = [u.strip() for u in user]
user = User(*user)
yield user
def insert(cur, user):
u = list(user)[0] # it's a one-elem list so take it
cur.execute("INSERT INTO users (name, location) VALUES(%s, %s)",
(u.name, u.location))
if __name__ == '__main__':
cur = cxn.cursor()
user = process_csv(filecsv)
insert(cur, user)
При запуске этого, только первая строка была вставлена в дб. Не могли бы вы посоветовать, как это исправить?
Мы не можем видеть, как вызывается любая из этих функций. В частности, они, похоже, не связаны; ни один из них не называет другого. Как связаны эти функции? – user2357112
Извините, обновлено сейчас. – nutship
Просто сказать, что если это одноразовое задание, большинство баз данных имеют функции импорта напрямую из файлов CSV. например http://sqlite.org/cvstrac/wiki?p=ImportingFiles и http://dev.mysql.com/doc/refman/5.1/en/load-data.html – YXD