Crates.io | pretty-sqlite |
lib.rs | pretty-sqlite |
version | 0.0.1 |
source | src |
created_at | 2024-04-16 23:18:52.229152 |
updated_at | 2024-04-16 23:18:52.229152 |
description | Simple, Minimalistic Pretty Prints for SQLite using rusqlite |
homepage | https://github.com/jeremychone/rust-pretty-sqlite |
repository | https://github.com/jeremychone/rust-pretty-sqlite |
max_upload_size | |
id | 1210821 |
size | 36,572 |
pretty-sqlite
- Simple, Minimalistic Pretty Prints for SQLiteThis library assists with testing and exploratory development of SQLite by conveniently printing the contents of a table or a select statement into a nicely formatted table using the tabled crate.
This library is based on the rusqlite crate.
NOTES:
- Version
0.0.x
will undergo API changes. Feel free to cherry-pick the code you want.- The upcoming version
0.1.x
will be more stable but may still include some API-breaking changes. Thus, it is recommended to lock to a specific version (e.g.,=0.1.2
).- Version
0.2.x
and onward will follow semantic versioning more strictly.
IMPORTANT: By default, all queries/prints are limited to 300
records. Using pretty_selection_with_options
and the PrettyOptions can change this default behavior.
The API convention is as follows:
pretty_...
, like pretty_table
and pretty_select
, return a formatted string of the table/query content.print_...
, like print_table
and print_select
, call println!()
on the function above.There is also a more advanced function:
pretty_select_with_options(conn, sql, params, pretty_options)
allows customization of the table result with PrettyOptions
.let conn = Connection::open_in_memory()?; // for file: Connection::open(path)?
// ... seed db
// -- Print table
pretty_sqlite::print_table(&conn, "person")?;
// Same as:
// let content = pretty_sqlite::pretty_table(&conn, "person")?;
// println!("{content}");
Will print something like:
TABLE: person
┌────┬────────────┬──────┬──────────┬───────────────────┐
│ id │ name │ yob │ data_t │ data_b │
├────┼────────────┼──────┼──────────┼───────────────────┤
│ 1 │ "Person 1" │ 1951 │ "Data 1" │ BLOB (length: 10) │
├────┼────────────┼──────┼──────────┼───────────────────┤
│ 2 │ "Person 2" │ 1952 │ "Data 2" │ BLOB (length: 10) │
├────┼────────────┼──────┼──────────┼───────────────────┤
│ 3 │ "Person 3" │ 1953 │ "Data 3" │ BLOB (length: 10) │
├────┼────────────┼──────┼──────────┼───────────────────┤
│ 4 │ "Person 4" │ 1954 │ "Data 4" │ BLOB (length: 10) │
├────┼────────────┼──────┼──────────┼───────────────────┤
│ 5 │ "Person 5" │ 1955 │ "Data 5" │ BLOB (length: 10) │
└────┴────────────┴──────┴──────────┴───────────────────┘
let conn = Connection::open_in_memory()?; // for file: Connection::open(path)?
// ... seed db
pretty_sqlite::print_select(&conn, "select id, name, yob from person where id > ?", (2,))?;
// Same as:
// let content = pretty_sqlite::pretty_select(&conn, "select id, name, yob from person where id > ?", (2,))?;
// println!("{content}");
┌────┬────────────┬──────┐
│ id │ name │ yob │
├────┼────────────┼──────┤
│ 3 │ "Person 3" │ 1953 │
├────┼────────────┼──────┤
│ 4 │ "Person 4" │ 1954 │
├────┼────────────┼──────┤
│ 5 │ "Person 5" │ 1955 │
└────┴────────────┴──────┘