【发布时间】:2018-07-03 14:25:30
【问题描述】:
我正在尝试通过 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 的类对象
<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'};
【问题讨论】:
标签: python python-2.7 cassandra