我需要运行一个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'。
有什么想法,是什么导致了这个问题?谢谢你的帮助。
1 个回答
0 人赞同
语法错误。{不需要。在SQL工作平台上没有引发错误,但当我通过python运行时却引发了错误。
SELECT deviceid, json_extract_path_text(extra_ctx, 'skip_login')