logica
logica copied to clipboard
Plain run functions for basic python script
Hello, I'm trying to write some scripts where I wanted to try using logica because the whole WITH AS syntax of plain sql got a bit heavy
While looking through the tutorials, I couldn't find a plain function to take a connection and a program and just run it in a python script, so I created my own:
def logica_psql(rules:str, target:str, conn: psycopg2.extensions.connection):
"""
rules: The logica program
target: The target predicate to be selected
conn: A psycopg2 connection
return: a cursor containing the results
"""
program = universe.LogicaProgram(parse.ParseFile(rules, import_root=None)['rule'])
sql = program.FormattedPredicateSql(target)
return psql_logica.PostgresExecute(sql, conn)
def logica_sqlite3(rules: str, target: str, conn: sqlite3.Connection):
"""
rules: The logica program
target: The target predicate to be selected
conn: A sqlit3 connection
return: a cursor containing the results
"""
program = universe.LogicaProgram(parse.ParseFile(rules, import_root=None)['rule'])
sql = program.FormattedPredicateSql(target)
cursor = conn.cursor()
cursor.execute(sql)
return cursor
Now I want to make sure that a) I didn't miss some builtin functionality that handles this. If not, does it make sense to add these kinds of standard functions? b) I didn't make some major mistake in the logic here, especially for the postgres function, since I got lost with how postgres is handled in the library
Thanks for any help :D