Вставьте информационный кадр Pandas в таблицу Cassandra

Из документации есть способ вставить данные в таблицу:

session.execute(
    """
    INSERT INTO users (name, credits, user_id)
    VALUES (%s, %s, %s)
    """,
    ("John O'Reilly", 42, uuid.uuid1())
)

Имя столбца должно быть указано там. Однако, в моем случае, у меня есть фрейм данных, который имеет только строку заголовка и строку данных, например:"sepal_length" : 5.1,"sepal_width" : 3.5,"petal_length" : 1.4 ,"petal_width" : 0.2, "species" : "Iris",

Пользователь предоставит информацию для моего API для подключения к своей таблице базы данных Cassandra, которая содержит имя столбцов, которые хранятся в кадре данных. Как я могу вставить данные информационного кадра относительно заголовка столбца, сопоставленного с таблицей, без фактического жесткого кодирования имени столбца, как указано в документации, так как заголовки не одинаковы для разных случаев.

Я пытаюсь добиться чего-то вроде этого:

def insert_table(df, table_name, ... #connection details):
    #Set up connection and session
    session.execute(
        """
        INSERT INTO table_name(#df's column header)
        VALUES (%s, %s, %s)
        """,
        (#df's data for the only row)
    ) 

Я обнаружил это, но на самом деле мне просто нужна простая операция вставки.

1 ответ

Вы можете получить имена столбцов Dataframe с помощью следующих

column_names = list(my_dataframe.columns.values)

Вы могли бы переписать insert_table(...) принять список имен столбцов в качестве аргумента.

Например, подстановка строк может использоваться для формирования оператора CQL:

cql_query = """
    INSERT INTO {table_name} ({col_names})
    VALUES (%s, %s, %s)
    """.format(table_name="my_table", col_names=','.join(map(str, column_names)))
...
Другие вопросы по тегам