【发布时间】:2020-12-15 00:53:29
【问题描述】:
我已将 JSON 数据存储在“数据”列中。 我只想检索键为“1”的那些行。 问题是 None 值也被提取,当我使用 WHERE 子句删除 None 值时,我遇到了错误。
cursor.execute('''SELECT data -> '1' FROM table WHERE data != %s''',(None,))
data_list= cursor.fetchall()
我得到的错误-
psycopg2.errors.UndefinedFunction: operator does not exist: json <> unknown
LINE 1: SELECT data-> '1' FROM table WHERE data!= NULL
HINT: No operator matches the given name and argument types. You might need to add explicit type casts.
数据列是这样的-
[(None,), (None,), (None,), ({'1':{"post":{salary: 100000 , "shift": "first" }}} ,), ({'1':{"post":{salary: 180000 , "shift": "second" }}},), (None,), ({'2':{"post":{salary: 20000 , "shift": "first" }}})]
我正在使用 python psycopg2 模块。
【问题讨论】:
-
请提供
data表的表示形式。如果显示您的数据库表的样子,该场景可能更容易理解 -
添加数据列
-
您想先将行提取到python,然后过滤您需要的数据吗?而不是尝试直接使用 MySQL 进行过滤
-
我想直接从 SQL 中过滤,因为行数预计为 50k+,如果我在提取后尝试解析,这可能会减慢程序速度。
标签: python json postgresql psycopg2