Database Persistence Layer for TCL
Contact: neophytos (at) gmail (dot) com
This module was generated with help from AI.
* 2026-10-31 tpersist-v0.1.0 (Initial release of tpersist, a Tcl SQL toolkit inspired by SQLAlchemy Core.)
Here are some examples with optional TclOO API:
package require tpersist::oo
namespace import ::tpersist::db_*
set database [::tpersist::oo::Database new -database :memory:]
$database create_table [db_define_table users {
id {type integer primary_key 1 auto_increment 1}
name {type text}
age {type integer}
}]
set insert [$database insert users]
$database transaction {
foreach {name age} {Alice 30 Bob 17 Carol 42} {
$insert values [dict create name $name age $age]
$insert execute
}
}
# set everyone [$database select users -columns {name age}]
set everyone [$database select users -expr {name, age}]
set adults [$everyone fork]
# $adults where [db_ge [db_col age] [db_value 18 -type integer]]
$adults where -expr {age >= 18}
# $adults order_by [db_desc [db_col age]]
$adults order_by -expr {age DESC}
$adults limit 10
puts "Adults: [$adults all]"
puts "Everyone: [$everyone all]"
# Interoperate with procedural code using the same statement dictionary.
puts "SQL: [dict get [db_compile [$adults statement]] sql]"
puts "Params: [dict get [db_compile [$adults statement]] params]"
# Also destroys its queries and disconnects the TDBC connection.
$database destroy
# Adults: {name Carol age 42} {name Alice age 30}
# Everyone: {name Alice age 30} {name Bob age 17} {name Carol age 42}
# SQL: SELECT "name", "age" FROM "users" WHERE ("age" >= :p1) ORDER BY "age" DESC LIMIT :p2
# Params: p1 18 p2 10