Форум сайта python.su
Доброго времени суток. Появилась такая задача, необходимо перевести файл из csv в sqlite, вроде задача не сложная, но нужно изменить последовательность записи, то есть чтобы записывало, например, данные из 2 столбца в 4 и т.п.
Сейчас есть такой код, но это просто запись один к одному:
import sqlite3 import csv con = sqlite3.connect('out_data') con.text_factory = str cur = con.cursor() cur.execute("CREATE TABLE IF NOT EXISTS out_data (chair, day, name, class_index, shift_index, camp)") f = csv.reader(open('/home/andrei/IntelSS/data/csv/out.csv', 'rb')) for item in f: cur.execute("INSERT OR IGNORE INTO out_data VALUES (?, ?, ?, ?, ?, ?)", item) con.commit() con.close()
Офлайн
Andru111
чтобы записывало, например, данные из 2 столбца в 4
for item in f: newitem = item[:] newitem[3] = newitem[1] cur.execute("INSERT OR IGNORE INTO out_data VALUES (?, ?, ?, ?, ?, ?)", newitem)
Отредактировано py.user.next (Фев. 13, 2017 00:57:10)
Офлайн
Спасибо огромное, все получилось!
И еще такой вопрос, как можно сохранить имя csv файла в переменную?
Офлайн
> нужно изменить последовательность записи, то есть чтобы записывало, например, данные из 2 столбца в 4 и т.п.
А зачем? С точки зрения БД это вещь бессмысленная.
Офлайн
RodegastНеобходимо было отсортировать по другому, но с этим уже помогли, теперь есть другой вопрос:
А зачем? С точки зрения БД это вещь бессмысленная.
Andru111
И еще такой вопрос, как можно сохранить имя csv файла в переменную?
Офлайн
вроде разобрался, но мне кажется, что это костыль, так оно или нет?
f = open('/home/andrei/IntSS/data/csv/out.csv', 'rb') a = f.name.split('/') name = a[len(a)-1] r = csv.reader(f)
Офлайн
Andru111
вроде разобрался, но мне кажется, что это костыль, так оно или нет?
import os idir = '/home/andrei/IntSS/data/csv' ifname = 'out.csv' ipath = os.path.join(idir, ifname) with open(ipath, 'rb') as fin: print(fin.readline())
Офлайн