diff --git a/examples/demo_postgresql.py b/examples/demo_postgresql.py new file mode 100644 index 0000000..408bdc1 --- /dev/null +++ b/examples/demo_postgresql.py @@ -0,0 +1,13 @@ +from pandas import DataFrame +from pandasql import PandaSQL + +# a dataframe +df1 = DataFrame({"a": [1, 2, 3, 1], "b": [7, 1, 5, 3]}) + +# establish postgresql connection using psycopg2 driver +# log in with username: tubh; password: tubh; using unix socket at /tmp +sqlClass = PandaSQL("postgresql+psycopg2://tubh:tubh@/tubh?host=/tmp") + +# try function GREATEST which is not supported by sqlite by is supported by postgresql +result = sqlClass(("select GREATEST(tbl.a, tbl.b) as maxA_B from tbl"), {"tbl": df1}) +print(result) diff --git a/pandasql/sqldf.py b/pandasql/sqldf.py index e25398a..8c5dac0 100644 --- a/pandasql/sqldf.py +++ b/pandasql/sqldf.py @@ -1,7 +1,7 @@ import inspect from contextlib import contextmanager from pandas.io.sql import to_sql, read_sql -from sqlalchemy import create_engine +from sqlalchemy import create_engine, text import re from warnings import catch_warnings, filterwarnings from sqlalchemy.exc import DatabaseError, ResourceClosedError @@ -89,7 +89,7 @@ def conn(self): def _init_connection(self, conn): if self.engine.name == 'postgresql': - conn.execute('set search_path to pg_temp') + conn.execute(text('set search_path to pg_temp')) def _set_text_factory(self, dbapi_con, connection_record): dbapi_con.text_factory = str