添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

我需要运行一个SQL(Redshift)查询,目前我正在使用一个jupyter/ipython笔记本工作。我有sqlalchemy-redshift。

from sqlalchemy import create_engine, text
engine_string = databasepwrd.redshiftconnection()
engine = create_engine(engine_string)
from pandas.io import sql
def run_query(sequalese):
    '''returns a dataframe given a string SQL query'''
    sql_query = text(sequalese)
    df = sql.read_sql(sql_query,engine )
    return df
run_query("""
SELECT deviceid, json_extract_path_text({extra_ctx, 'skip_login'})
FROM table
LIMIT 10""")

其中'extra_ctx'是redshift表中的一个列,包含json字符串。

我知道我的查询是有效的,因为当我通过SQL Workbench直接查询我们的数据库时,它可以运行。当我试图在我的笔记本中运行它时,我收到了错误。

'ProgrammingError: (psycopg2.ProgrammingError) syntax error at or near "extra_ctx"
LINE 1: SELECT user, json_extract_path_text({extra_ctx, 'skip_lo...' 

<-- 还有一个小^指向extra_ctx上的'e'。

有什么想法,是什么导致了这个问题?谢谢你的帮助。

2 个评论
检查你是如何在SQL中调用该函数的,语法错误是正确的。你应该把一个json值from_json(例如一个列)作为第一个参数,把变量文本值作为path_elems。你的当前和唯一的参数甚至不是有效的SQL。换句话说,删除大括号。
谢谢你的快速回答。你是对的,显然我不需要{ }。我一定是误读了文档--谢谢你。
python
sqlalchemy
amazon-redshift
pandasql
drxtrz
drxtrz
发布于 2016-06-30
1 个回答
drxtrz
drxtrz
发布于 2016-06-30
已采纳
0 人赞同

语法错误。{不需要。在SQL工作平台上没有引发错误,但当我通过python运行时却引发了错误。

SELECT deviceid, json_extract_path_text(extra_ctx, 'skip_login')