Некоторые операции, такие как df.merge, не сохраняют порядок столбцов в результирующем фрейме данных, или иногда мы хотим применить различные операции к фрейму данных, который в конечном итоге преобразуется в новый фрейм данных с дополнительным столбцом или изменением типов данных некоторых столбцов. И если мы хотим загрузить данные фрейма данных в таблицу SQL, одна из проблем, с которыми мы сталкиваемся при этом, заключается в создании соответствующей таблицы в вашей базе данных для загрузки данных.

Здесь я представляю небольшой пример того, как создать таблицу с именем столбца, таким же, как столбцы фрейма данных, и как выбрать соответствующие типы данных для столбцов.

Допустим, у нас есть данные об инвесторах и их инвестициях в двух отдельных CSV-файлах, и мы хотим объединить оба CSV-файла и загрузить полученные данные в базу данных. Фиктивные данные, сгенерированные с mockaroo.com

Шаг 1. Считайте CSV-файлы во фреймы данных.

import pandas as pd
investorDF = pd.read_csv('investor.csv')
investmentDF = pd.read_csv('investment.csv')

Шаг 2. Выполните операцию слияния/объединения или любые другие вычисления с кадрами данных.

resultDF = investorDF.merge(investmentDF)

Шаг 3. Соберите имена столбцов в список Python.

columnName = list(resultDF.columns.values)

Шаг 4. Выбор типов данных для таблицы SQL немного сложен. Поскольку типы данных pandas data-frame и СУБД совершенно разные. Для сбора типов данных в список мы можем написать небольшой фрагмент кода, например

def getColumnDtypes(dataTypes):
    dataList = []
    for x in dataTypes:
        if(x == 'int64'):
            dataList.append('int')
        elif (x == 'float64'):
            dataList.append('float')
        elif (x == 'bool'):
            dataList.append('boolean')
        else:
            dataList.append('varchar')
    return dataList
columnDataType = getColumnDtypes(resultDF.dtypes)

Шаг 5. Теперь у нас есть списки всех имен столбцов и типов данных столбцов. Нам нужно снова написать небольшой фрагмент кода, чтобы завершить оператор создания таблицы.

createTableStatement = 'CREATE TABLE IF NOT EXISTS investordetails ('
for i in range(len(columnDataType)):
    createTableStatement = createTableStatement + '\n' + columnName[i] + ' ' + columnDataType[i] + ','
createTableStatement = createTableStatement[:-1] + ' );'

Шаг 5 даст нам необходимый оператор создания таблицы.

Шаг 6: Теперь мы можем использовать библиотеку Python, такую ​​как psycopg2 или любую другую в соответствии с нашей системой базы данных, для выполнения оператора для создания таблицы.

import psycopg2
conn = psycopg2.connect(dbname='testdb', host='abc.xyz.com', port='xxxx', user='mydbuser', password='xxxxxxxx')
cur = conn.cursor()
cur.execute(createTableStatement)
conn.commit()

Выполнив все вышеперечисленные шаги, вы сможете создать таблицу в базе данных для загрузки данных из фрейма данных Pandas.

Спасибо, что прочитали эту статью. Я надеюсь, что вы найдете это полезным.

Вы также можете найти полный код здесь.