RpRelPyDBRelational Python

Documentation

3. Tables and Schema

Developer-focused documentation with concepts, function details, examples, outputs and SQL comparisons.

Creating tables and columns

db = RelPy()
db.create_table("users")
db.add_column("users", "id", AutoNumber, is_primary_key=True)
db.add_column("users", "name", str, nullable=False)
db.add_column("users", "email", str, nullable=False, is_pii=True, is_encrypted=True)
FunctionPurposeReturns
create_table(table_name)Creates an empty relation and initializes storage.self
add_column(...)Adds typed metadata and constraints to a table.self
set_primary_key(...)Sets a single or composite primary key using existing columns.self

add_column parameters

ParameterTypeDefaultMeaning
table_namestrrequiredExisting table.
column_namestrrequiredNew column name. Must be identifier-like.
data_typetyperequiredPython type such as int, str, float, bool or AutoNumber.
is_primary_keyboolFalseMarks a single-column primary key.
is_piiboolFalseMetadata that marks personal data.
is_encryptedboolFalseEncrypts stored values and masks exports by default.
referencesstr | NoneNoneForeign key target such as "users.id".
on_deletestr | NoneNoneRESTRICT, CASCADE or SET NULL.
nullablebool | NoneNoneRegular columns default to nullable. Primary keys default to not nullable.
defaultAnynot setUsed when an inserted row omits the column.

Primary keys and foreign keys

db.add_column("orders", "id", AutoNumber, is_primary_key=True)
db.add_column("orders", "user_id", int, nullable=False, references="users.id", on_delete="CASCADE")
CREATE TABLE orders (
  id INTEGER PRIMARY KEY,
  user_id INTEGER NOT NULL,
  FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);

Foreign keys allow automatic join inference and relational delete behavior.

Schema inspection

db.describe_table("users")
db.describe_schema()
db.to_ddl()
db.table_to_ddl("users")

Use these functions to inspect the object or export a schema sketch.