Python Cassandra 驱动程序:插入期间的编码问题

马可波佛

我正在开发一个简单的 python 模块,它从 tsv 文件中读取数据并将它们加载到 Cassandra 键空间表中。

我从查看 Datastax 给出的示例开始,一切似乎都没问题,所以那时我开始编码。

该程序正确地从 tsv 文件读取数据,将它们转换为行列表,我验证了每行的每个元素都具有目标列的正确类型。但是当我尝试将原始数据插入表格时,终端会说:

AttributeError: 'float' 对象没有属性 'encode'

这是代码:

#Upload data to Cassandra DB (cassandra_df is a Pandas dataframe)
session.set_keyspace(data_ks)
cassandra_df_list = cassandra_df.values.tolist()

query = "INSERT INTO table_str (rowid,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd) VALUES (uuid(),?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
prepared = session.prepare(query)

for row in cassandra_df_list:

    prepared.bind(row)
    session.execute(prepared)

cluster.shutdown()

为了解决这个问题,我做了很多更改,但是我遇到了新问题或同样的问题,用“int”代替“float”。我还在这里阅读了其他问题,并尝试在 prepare.bind() 中使用 str(row) 和 repr(row),但我遇到了其他错误。

我是 Python 新手,找不到其他解决方案,你会怎么做?

提前致谢!

编辑对不起,我忘了提供有关数据库表的详细信息。下面是创建语句:

CREATE TABLE prova.table_str (
rowid uuid PRIMARY KEY,
a text,
aa text,
ab text,
ac text,
ad text,
ae text,
af text,
ag text,
ah text,
ai text,
aj double,
ak double,
al double,
am text,
an double,
ao double,
ap double,
aq double,
ar double,
as double,
at double,
au double,
av double,
aw double,
ax double,
ay double,
az double,
b text,
ba double,
bb text,
bc text,
bd text,
c text,
d text,
e int,
f text,
g text,
h text,
i text,
j text,
k double,
l int,
m text,
n double,
o int,
p int,
q text,
r text,
s text,
t text,
u text,
v int,
w text,
x text,
y text,
z text

)

亚当·霍姆伯格

您没有分享您的架构或堆栈跟踪,但我猜想数据框具有数字类型,而您的 Cassandra 表有一堆字符串列。我将概述三种可能的解决方案:

1.) 使表类型与您的数据匹配,以便绑定编码工作。

2.) 将您的参数转换为与您的架构相同的类型。例如,如果它们都是字符串:

prepared.bind(str(c) for c in row)

3.) 使用简单的语句而不是准备。在这种情况下,您可以将?绑定标记替换为%s并让驱动程序使用参数的字符串插值。

query = "INSERT INTO table_str (rowid,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd) VALUES (uuid(),%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
for row in cassandra_df_list:
    session.execute(query, row)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Cassandra Python 驱动程序 ReadTimeout

来自分类Dev

DS201:使用Python驱动程序插入cassandra时,如何获取“ timeuuid类型”的值?

来自分类Dev

使用准备好的语句时,Cassandra中的python驱动程序出现问题

来自分类Dev

在Docker中设置cassandra驱动程序(python)

来自分类Dev

Datastax Cassandra驱动程序(python)导入失败

来自分类Dev

cassandra python驱动程序绑定到int

来自分类Dev

Datastax Cassandra驱动程序(python)导入失败

来自分类Dev

cassandra python驱动程序绑定到int

来自分类Dev

Cassandra模型的CQL(datastax驱动程序:python)

来自分类Dev

大批量插入期间Cassandra DataStax驱动程序NoHostAvailableException

来自分类Dev

DataStax Python Cassandra 驱动程序错误地发现本地主机上的 Cassandra

来自分类Dev

Python:异步Cassandra插入

来自分类Dev

python cql驱动程序-cassandra.ReadTimeout-“操作超时-仅收到1个响应。”

来自分类Dev

使用Python驱动程序检查Cassandra表中是否存在记录

来自分类Dev

有人让ssl使用Python Cassandra驱动程序和eventlet吗?

来自分类Dev

Cassandra 3.1 Python驱动程序“输入描述中没有可行的替代方法”

来自分类Dev

cqlsh和Python cassandra驱动程序中最大时间uuid的差异

来自分类Dev

python cql驱动程序-cassandra.ReadTimeout-“操作超时-仅收到1个响应。”

来自分类Dev

使用Python驱动程序检查Cassandra表中是否存在记录

来自分类Dev

cassandra python 驱动程序自动降级 protocol_version 不起作用

来自分类Dev

如何使用cassandra驱动程序将地图类型插入cassandra

来自分类Dev

Cassandra CQL驱动程序实现

来自分类Dev

Cassandra Java驱动程序UDT映射

来自分类Dev

Datastax Cassandra驱动程序引发CodecNotFoundException

来自分类Dev

Cassandra Java驱动程序连接错误

来自分类Dev

TypeError:使用UDT集创建Cassandra Python驱动程序模型时,无法散列的类型UserType

来自分类Dev

在cassandra python中插入列表

来自分类Dev

使用python将大列表插入Cassandra

来自分类Dev

使用CQL Java驱动程序在Cassandra中插入数据而不用单引号引起来

Related 相关文章

  1. 1

    Cassandra Python 驱动程序 ReadTimeout

  2. 2

    DS201:使用Python驱动程序插入cassandra时,如何获取“ timeuuid类型”的值?

  3. 3

    使用准备好的语句时,Cassandra中的python驱动程序出现问题

  4. 4

    在Docker中设置cassandra驱动程序(python)

  5. 5

    Datastax Cassandra驱动程序(python)导入失败

  6. 6

    cassandra python驱动程序绑定到int

  7. 7

    Datastax Cassandra驱动程序(python)导入失败

  8. 8

    cassandra python驱动程序绑定到int

  9. 9

    Cassandra模型的CQL(datastax驱动程序:python)

  10. 10

    大批量插入期间Cassandra DataStax驱动程序NoHostAvailableException

  11. 11

    DataStax Python Cassandra 驱动程序错误地发现本地主机上的 Cassandra

  12. 12

    Python:异步Cassandra插入

  13. 13

    python cql驱动程序-cassandra.ReadTimeout-“操作超时-仅收到1个响应。”

  14. 14

    使用Python驱动程序检查Cassandra表中是否存在记录

  15. 15

    有人让ssl使用Python Cassandra驱动程序和eventlet吗?

  16. 16

    Cassandra 3.1 Python驱动程序“输入描述中没有可行的替代方法”

  17. 17

    cqlsh和Python cassandra驱动程序中最大时间uuid的差异

  18. 18

    python cql驱动程序-cassandra.ReadTimeout-“操作超时-仅收到1个响应。”

  19. 19

    使用Python驱动程序检查Cassandra表中是否存在记录

  20. 20

    cassandra python 驱动程序自动降级 protocol_version 不起作用

  21. 21

    如何使用cassandra驱动程序将地图类型插入cassandra

  22. 22

    Cassandra CQL驱动程序实现

  23. 23

    Cassandra Java驱动程序UDT映射

  24. 24

    Datastax Cassandra驱动程序引发CodecNotFoundException

  25. 25

    Cassandra Java驱动程序连接错误

  26. 26

    TypeError:使用UDT集创建Cassandra Python驱动程序模型时,无法散列的类型UserType

  27. 27

    在cassandra python中插入列表

  28. 28

    使用python将大列表插入Cassandra

  29. 29

    使用CQL Java驱动程序在Cassandra中插入数据而不用单引号引起来

热门标签

归档