В python я хотел бы:
Я могу справиться с большинством этих шагов, есть лишь несколько вещей, которых я не понимаю.
Возможно ли это с помощью скрипта sqlite? Сможет ли класс python sqlite выполнить этот скрипт?
conn = sqlite3.connect(central_database, check_same_thread=False)
cur = self.conn.cursor()
#user defines csv file and other params via http form -> script
cur.execute(script)
csv = cur.fetchall()
Я мог думать об этом неправильно. Итак, вот моя установка:
Да. это должно быть легко в питоне. Вы можете использовать модуль csv для чтения / записи csv, и что было бы с sqlite3, если бы вы не могли его запросить. Кроме .... это база данных sqlite? Если нет, используйте другую библиотеку python sql. Это слишком широко для этого сайта, поэтому мы закроем его, но продолжим.
pandas в порядке, но csv может быть проще. Так что уже препираемся!
Предполагая, что вы не можете использовать pandas, вы можете создать таблицу и вставить данные csv в временную таблицу. После того, как он вставлен, запустите запросы в своей таблице. Получите данные и поместите их в csv. Для вставки данных в SQL перейдите сюда: stackoverflow.com/questions/21257899/…
Скорее всего, вы могли бы сделать все это, импортировав csv в базу данных и выполнив там работу в sql.






Не тестировал, но вы можете попробовать следующее:
conn = sqlite3.connect(central_database, check_same_thread=False)
cur = self.conn.cursor()
# Create table using first row of csv (column names)
#user defines csv file and other params via http form -> script
with open ('test.csv', 'r') as f:
reader = csv.reader(f)
columns = next(reader)
query = 'insert into MyTable({0}) values ({1})'
query = query.format(','.join(columns), ','.join('?' * len(columns)))
for data in reader:
cur.execute(query, data)
cur.commit()
cur.execute(script)
csv = cur.fetchall()
# Delete table
Источник: Запись CSV-файла в базу данных SQL Server с использованием Python
Это похоже на то, что я мог бы работать в коде. Спасибо. Действительно ли эта таблица временная? Я хочу убедиться, что после выполнения запроса и создания файла csv таблица больше не существует в базе данных.
Плохо, я забыл добавить часть, в которой вы создаете таблицу. Это настолько временно, насколько вы хотите. Вам нужно будет создать таблицу, и, если хотите, вы можете удалить ее после экспорта данных.
Не могли бы вы указать код для создания таблицы? Я предполагаю, что здесь важна переменная columns, поскольку они будут использоваться в запросе
Думаю, я уловил суть. Вся ручная обработка запросов и сохранение. Спасибо за понимание, Крис!
Вам нужно будет построить строку запроса, используя имена столбцов из первой строки CSV. Что-то вроде: cur.execute («удалить таблицу, если существует временная_таблица»), за которой следует cur.execute («создать таблицу temp_table (тип имени_столбца, ...)
И для построения запроса создайте словарь, в котором имя столбца соответствует типу.
Крис: Я прихожу к выводу, что это может быть немного медленным, если файл CSV очень большой. Есть ли другой подход, который использует функцию sqlite3 '.import {filename}'?
Если это сценарий, который будет запускать пользователь, я бы порекомендовал создать вашу временную таблицу на Python с помощью Pandas, внести в нее изменения и затем записать это обратно в CSV. Это вариант?