Search code examples
pythonapache-phoenix

[Python]:phoenixdb.errors.ProgrammingError: ("Syntax error. Unexpected char: '!'", 601, '42P00', None)


I am using a python module called phoenixdb to access phoenix which is SQL wrapper to query over HBase.

Here is my code snippet:-

import phoenixdb

database_url = 'http://localhost:8765/'
conn = phoenixdb.connect(database_url, autocommit=True)
cursor = conn.cursor()

cursor.execute("!table")
print cursor.fetchall()
cursor.close()

The phoenix query to list all the schemes and tables is !table or !tables. But when I try passing the same in the execute function as shown above, I get the following error:-

Traceback (most recent call last):
File "phoenix_hbase.py", line 7, in <module>
cursor.execute("!table")
File "build/bdist.linux-x86_64/egg/phoenixdb/cursor.py", line 242, in execute
File "build/bdist.linux-x86_64/egg/phoenixdb/avatica.py", line 345, in   prepareAndExecute
File "build/bdist.linux-x86_64/egg/phoenixdb/avatica.py", line 184, in _apply
File "build/bdist.linux-x86_64/egg/phoenixdb/avatica.py", line 90, in   parse_error_page
phoenixdb.errors.ProgrammingError: ("Syntax error. Unexpected char: '!'",   601, '42P00', None)

Funny part is when I try to passing a different query, for example a select query, then script gets executed and produces result just fine.

Query:cursor.execute("select * from CARETESTING.EDR_BIN_SOURCE_3600_EDR_FLOW_SUBS_TOTAL limit 1")

Result:
[[2045,1023,4567]]

Is there any other format for passing !table which is equivalent to show tables in phoenixdb library's execute function which I am missing?

I tried looking up on the internet but unfortunately haven't come across anything helpful so far.

Thanks


Solution

  • !tables is sqlline grammar that can not be parsed by JDBC interface.