将Pandas数据框插入Cassandra表

时间:2017-09-18 13:22:44

标签: python pandas dataframe cassandra cassandra-python-driver

documentation开始,有一种方法可以将数据插入表中:

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)
    ) 

我发现this但我实际上只需要一个简单的插入操作。

1 个答案:

答案 0 :(得分:0)

您可以使用以下

获取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)))
...