Engine

The DPSQL+ Engine orchestrates the execution of differentially private SQL queries.

class dpsql.engine.Engine(accountant: Accountant, sql_backend: SQLBackend, validator: Validator)[source]
execute_query(query: str, dpparams: DPParams | None, temporary_table_name: str | None = None) DataFrame[source]

Execute a SQL query with privacy parameters.

Parameters:
  • query (str) – The SQL query to execute.

  • dpparams (DPParams | None) – The differential privacy parameters.

  • temporary_table_name (str | None) – The name of the temporary table to save the result.

Returns:

The result of the query execution.

Return type:

DataFrame

get_db_schema(database_name: str | None) dict[str, list[str]][source]

Get the schema of a database.

Parameters:

database_name (str) – The name of the database.

Returns:

The schema of the database. ex) {“table1”: [“column1”, “column2”], “table2”: [“column1”]}

Return type:

dict

register_database(database_name: str | None = None, privacy_unit_columns: dict[str, str] | None = None) None[source]

Register a database with privacy unit columns in Engine.

Parameters:
  • database_name (str) – The name of the database.

  • privacy_unit_columns (dict) – The privacy unit columns of the database. ex) {“table1”: “column1”} if there is no privacy unit column in a table, give {}

Returns:

None