Как создать файл CSV из базы данных в Python?

У меня есть таблица Sqlite 3 и / или MySQL с именем «клиенты» ..

Использование python 2.6, Как создать файл csv с именем Clients100914.csv с заголовками? Превосходный диалект …

Выполнение Sql: select * дает только данные таблицы, но я хотел бы заполнить таблицу заголовками.

Как создать набор записей для получения заголовков таблиц. Заголовки таблиц должны поступать непосредственно из sql, не написанного на python.

w = csv.writer(open(Fn,'wb'),dialect='excel') #w.writelines("header_row") #Fetch into sqld w.writerows(sqld) 

Этот код оставляет меня открытым файлом и заголовками. Также не можете понять, как использовать файл как журнал.

7 Solutions collect form web for “Как создать файл CSV из базы данных в Python?”

 import csv import sqlite3 from glob import glob; from os.path import expanduser conn = sqlite3.connect( # open "places.sqlite" from one of the Firefox profiles glob(expanduser('~/.mozilla/firefox/*/places.sqlite'))[0] ) cursor = conn.cursor() cursor.execute("select * from moz_places;") #with open("out.csv", "w", newline='') as csv_file: # Python 3 version with open("out.csv", "wb") as csv_file: # Python 2 version csv_writer = csv.writer(csv_file) csv_writer.writerow([i[0] for i in cursor.description]) # write headers csv_writer.writerows(cursor) 

PEP 249 (DB API 2.0) содержит дополнительную информацию о cursor.description .

Использование модуля csv очень прямолинейно и сделано для этой задачи.

 import csv writer = csv.writer(open("out.csv", 'w')) writer.writerow(['name', 'address', 'phone', 'etc']) writer.writerow(['bob', '2 main st', '703', 'yada']) writer.writerow(['mary', '3 main st', '704', 'yada']) 

Создает точно формат, который вы ожидаете.

Вы можете легко создать его вручную, записав файл с выбранным разделителем. Вы также можете использовать модуль csv .

Если это из базы данных, вы можете просто использовать запрос от своего клиента sqlite:

 sqlite <db params> < queryfile.sql > output.csv 

Будет создан CSV-файл с разделителем вкладок.

Как извлечь заголовки столбцов из существующей таблицы:

Вам не нужно анализировать инструкцию SQL create. Это удачно, так как синтаксис «create table» не является ни хорошим, ни чистым, он бородаво-уродливый.

Вы можете использовать table_info . Он дает вам полезную информацию о каждом столбце таблицы, включая имя столбца.

Пример:

 >>> #coding: ascii ... import sqlite3 >>> >>> def get_col_names(cursor, table_name): ... results = cursor.execute("PRAGMA table_info(%s);" % table_name) ... return [row[1] for row in results] ... >>> def wrong_way(cur, table): ... import re ... cur.execute("SELECT sql FROM sqlite_master WHERE name=?;", (table, )) ... sql = cur.fetchone()[0] ... column_defs = re.findall("[(](.*)[)]", sql)[0] ... first_words = (line.split()[0].strip() for line in column_defs.split(',')) ... columns = [word for word in first_words if word.upper() != "CONSTRAINT"] ... return columns ... >>> conn = sqlite3.connect(":memory:") >>> curs = conn.cursor() >>> _ignored = curs.execute( ... "create table foo (id integer, name text, [haha gotcha] text);" ... ) >>> print get_col_names(curs, "foo") [u'id', u'name', u'haha gotcha'] >>> print wrong_way(curs, "foo") [u'id', u'name', u'[haha'] <<<<<===== WHOOPS! >>> 

Другие проблемы с теперь удаленным «разобрать создание таблицы SQL» ответ:

  1. Например, create table test (id1 text, id2 int, msg text, primary key(id1, id2)) … необходимо игнорировать не только CONSTRAINT , но и ключевые слова PRIMARY , UNIQUE , CHECK и FOREIGN (см. create table документы).

  2. re.DOTALL указать re.DOTALL если в SQL есть re.DOTALL строки.

  3. В line.split()[0].strip() strip является избыточной.

если я что-то не хватает, вы просто хотите сделать что-то вроде этого …

 f = open("somefile.csv") f.writelines("header_row") 

логика для записи строк в файл (вам может потребоваться организовать значения и добавить комм или трубки и т. д.)

 f.close() 

Вы, кажется, знакомы с excel и хотите оставаться рядом с ним. Могу ли я предложить попробовать PyExcelerator ?

Это просто и прекрасно работает для меня.

Допустим, вы уже подключились к вашей таблице базы данных, а также получили объект курсора. Итак, продолжайте с этого момента.

 import csv curs = conn.cursor() curs.execute("select * from oders") m_dict = list(curs.fetchall()) with open("mycsvfile.csv", "wb") as f: w = csv.DictWriter(f, m_dict[0].keys()) w.writerow(dict((fn,fn) for fn in m_dict[0].keys())) w.writerows(m_dict) 
  • Python Sqlite3 - данные не сохраняются постоянно
  • Что это за инструкция cur.execute?
  • Как перенести CSV-файл в Sqlite3 (или MySQL)? - Python
  • Быстрое сброс базы данных в память в файл
  • Объединение нескольких резервных копий одной и той же схемы таблиц в 1 главную таблицу
  • SQLite3 и многопроцессорность
  • Есть ли способ получить схему базы данных из python?
  • Весь JSON в одно поле SQLite с Python
  • Почему один и тот же запрос SQLite в 30 раз медленнее при получении всего в два раза больше результатов?
  • Ошибка декодирования Python ASCII и Unicode
  • Python, SQLite3: курсор возвращает дубликаты, когда коммит вмешивается
  •  
    Interesting Posts for Van-Lav

    Обновлено до Ubuntu 16.04 теперь нарушены зависимости MySQL-python

    Словарь лучшей структуры данных для поездов?

    Создание записи в хранилище данных приводит к зашифрованным свойствам при просмотре в браузере

    Быстрое чтение указанных столбцов в df с помощью pandas.to_hdf

    Pandas DataFrame: заменить все значения в столбце, основываясь на условии

    pyspark не распознает шаблон MMM dateFormat в spark.read.load () для таких дат, как 1989Dec31 и 31Dec1989

    базовый удаленный вход на Python

    Как узнать обобщенный текст заданного URL-адреса в python / Django?

    Должен ли метод модифицирующего класса сохранять себя или быть вызванным вызовом после вызова метода?

    Подсчет изменений значения в каждом столбце в кадре данных в пандах

    Почему PyCrypto не использует стандартный IV?

    Как воспроизвести System.Security.Cryptography.SHA1Установленный результат в Python

    Имеют ли среды conda доступ к корневой среде? (== системные пакеты)?

    MLLClassifier импорта SKlearn не работает

    Создание функции с использованием yield вместо возврата для генерации кадров из HTTP-потока непрерывно

    Python - лучший язык программирования в мире.