Вставьте информационный кадр 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)))
...