ApacheCassandraPython插入数据

ApacheCassandraPython插入数据,python,cassandra,insert,Python,Cassandra,Insert,我试图在Cassandra中插入json文件中的数据以下是我的代码: with open('../test.jsonl') as f: data = f.readlines() for row in data: row = json.loads(row) insert_start = session.prepare( "INSERT INTO player_session.startevents (player_id, event, co

我试图在Cassandra中插入json文件中的数据以下是我的代码:

with open('../test.jsonl') as f:
    data = f.readlines()

for row in data:
    row = json.loads(row)
    insert_start = session.prepare(
        "INSERT INTO  player_session.startevents  (player_id,  event, country, session_id, ts) VALUES (?, ?, ?, ?, ?)")
    insert_end = session.prepare(
        "INSERT INTO  player_session.endevents  (player_id,  event, country, session_id, ts) VALUES (?, ?, ?, ?, ?)")
    if row['event'] == "start":
        session.execute(
            insert_start,
            [row['player_id'], row['event'], row['country'], row['session_id'], row['ts']]
        )
    if row['event'] == "end":
        session.execute(
            insert_end,
            [row['player_id'], row['event'],row['country'], row['session_id'], row['ts']]
        )
f.close()
print("data import complete") 
在我的cassandra表中,“ts”的数据类型是一个时间戳

我得到了这个错误:

line 17, in insert_data
    session.execute(
  File "cassandra/cluster.py", line 2618, in cassandra.cluster.Session.execute
  File "cassandra/cluster.py", line 2661, in cassandra.cluster.Session.execute_async
  File "cassandra/cluster.py", line 2864, in cassandra.cluster.Session._create_response_future
  File "cassandra/query.py", line 500, in cassandra.query.PreparedStatement.bind
  File "cassandra/query.py", line 631, in cassandra.query.BoundStatement.bind
TypeError: Received an argument of invalid type for column "ts". Expected: <class 'cassandra.cqltypes.DateType'>, Got: <class 'str'>; (DateType arguments must be a datetime, date, or timestamp)
插入数据中的第17行
session.execute(
文件“cassandra/cluster.py”,第2618行,位于cassandra.cluster.Session.execute中
cassandra.cluster.Session.execute\u async中的文件“cassandra/cluster.py”,第2661行
文件“cassandra/cluster.py”,第2864行,位于cassandra.cluster.Session.\u创建\u响应\u未来
文件“cassandra/query.py”,第500行,位于cassandra.query.PreparedStatement.bind中
文件“cassandra/query.py”,第631行,位于cassandra.query.BoundStatement.bind中
TypeError:收到列“ts”的无效类型参数。应为:,Get:;(DateType参数必须是datetime、date或timestamp)
如果我在没有prepare语句的情况下插入数据,它就会工作


提前感谢

首先-移动
会话。在循环之外准备
调用。其次,真正的问题是
行['ts']
具有字符串类型,并且您在数据库中具有
date
类型。因此,您需要使用类似的方式将字符串转换为
datetime
date

感谢它的工作!