gpt4 book ai didi

python - 在 python 中插入 Cassandra 时没有可行的输入异常

转载 作者:行者123 更新时间:2023-11-28 18:15:53 24 4
gpt4 key购买 nike

我正在尝试通过 python 将 UDT(用户定义类型)插入 Cassandra。

对象是

'dob':{'d': 1,'m': 1,'y': 2000}

我把这个对象转换成了UDT。

dob = udt_date(arg0, arg1, arg2)


class udt_date(object):
def __init__(self, d, m, y):
self.d = d
self.m = m
self.y = y

从上面的代码中我得到了 dob 的类对象 as

<connector_cassandra_processing.crud.udts_registration.udt_date object at 0x7f0c20461650>

现在我尝试使用以下查询将上述 UDT 插入到 cassandra

 INSERT INTO error_input_log_profile_mobile(mobile,ctdon,dob) VALUES (%s,%s,%s) ['111111342', 1234, <connector_cassandra_processing.crud.udts_registration.udt_date object at 0x7f0c20461650>]

但是我在插入时出现了以下错误。

Traceback (most recent call last):
File "/home/sys1010/PycharmProjects/test_connector_cassandra_processing/connector_cassandra_processing/dao/dao.py", line 23, in execute_query
result = session.execute(query, params, timeout=2000)
File "cassandra/cluster.py", line 2012, in cassandra.cluster.Session.execute (cassandra/cluster.c:35058)
return self.execute_async(query, parameters, trace, custom_payload, timeout, execution_profile, paging_state).result()
File "cassandra/cluster.py", line 3801, in cassandra.cluster.ResponseFuture.result (cassandra/cluster.c:73464)
raise self._final_exception
SyntaxException: <Error from server: code=2000 [Syntax error in CQL query] message="line 1:87 no viable alternative at input '<' (...dob) VALUES ('111111342',1234,[<]...)">

我到处尝试解决这个问题,但没有找到任何解决方案。有人请帮帮我。

表的架构

CREATE TABLE input_data_profile.error_input_log_profile_mobile (
mobile text PRIMARY KEY,
addrs set<frozen<udt_addrs>>,
asset set<frozen<udt_asset>>,
cid int,
cntno set<frozen<udt_cntno>>,
ctdat bigint,
ctdon bigint,
dob frozen<udt_date>,
dvc set<frozen<udt_dvc>>,
eaka set<text>,
edmn text,
educ set<frozen<udt_educ>>,
error_status tinyint,
gen tinyint,
hobby set<text>,
income set<frozen<udt_income>>,
interest set<text>,
lang set<frozen<udt_lang>>,
levnt set<frozen<udt_levnt>>,
like map<text, frozen<set<text>>>,
loc set<frozen<udt_loc>>,
mapp set<text>,
name frozen<udt_name>,
params map<text, frozen<set<text>>>,
prfsn set<frozen<udt_prfsn>>,
rel set<frozen<udt_rel>>,
rel_s tinyint,
skills_prfsn set<frozen<udt_skill_prfsn>>,
snw set<frozen<udt_snw>>,
sport set<text>
);
CREATE CUSTOM INDEX err_idx ON input_data_profile.error_input_log_profile_mobile (error_status) USING 'org.apache.cassandra.index.sasi.SASIIndex' WITH OPTIONS = {'mode': 'CONTAINS', 'analyzer_class': 'org.apache.cassandra.index.sasi.analyzer.NonTokenizingAnalyzer', 'case_sensitive': 'false'};

最佳答案

如果你想将一个对象存储到你的数据库中!您必须覆盖 __repr____str__ 方法。像这样的东西:

class udt_date(object):
def __init__(self, d, m, y):
self.d = d
self.m = m
self.y = y

def __repr__(self):
return "d:{} m:{} y:{}".format(self.d, self.m, self.y)

然后您可以通过以下方式轻松地将其插入到您的数据库中:

 my_date = udt_date(12,13, 14)

INSERT INTO error_input_log_profile_mobile(mobile,ctdon,dob) VALUES (%s,%s,%s) ['111111342', 1234, my_date]

关于python - 在 python 中插入 Cassandra 时没有可行的输入异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48424220/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com