2 个不稳定版本
0.2.0 | 2024年5月1日 |
---|---|
0.1.0 | 2024年5月1日 |
#1406 在 数据库接口
21KB
406 行
Db Introspection Crate
一个数据库自省和生成库。
概述
此库允许您为您的实时数据库创建模拟数据。
特性
- 使用异步操作连接到 PostgreSQL 或 MySQL 数据库。
- 检索有关表及其名称、类型和模式等详细信息。
- 获取列的详细信息,如名称、数据类型和可空性。
- 使用简单的宏生成模拟数据
使用方法
要使用此库,请确保您有一个运行并可访问的 PostgreSQL 或 MySQL 数据库。您可以在运行主应用程序时指定数据库的连接字符串,该应用程序利用此库来获取和显示数据库模式信息。
库使用
获取列及其类型
要获取所有表列表,请使用 get_tables()
函数
use dbspec::get_tables;
#[tokio::main]
async fn main() {
let all_my_tables = get_tables("connection_string").await;
// ...
}
您将能够通过使用 faking!()
宏来生成模拟数据。
use dbspec::faking;
use dbspec::fakeit; // or your choice of faking libraries
faking!(
Id, id: String, || unique::uuid_v4();
CreatedAt, created_at: chrono::DateTime<Utc>, random_datetime;
UpdatedAt, updated_at: chrono::DateTime<Utc>, random_datetime;
Gender, gender: String, || gender();
Age, age: i32, || random_number_between(18, 100);
);
fn random_number_between(start: i32, end: i32) -> i32 {
rand::thread_rng().gen_range(start..=end)
}
fn random_datetime() -> DateTime<Utc> {
let data = datetime::date();
DateTime::from_timestamp(data.secs, data.nsecs).expect("invalid or out-of-range datetime")
}
这在将列映射以获取随机设计值时特别有用,例如
async fn generate_new_user() {
for i in 0..10 {
let user = User {
id: match_struct("id"),
username: match_struct("username"),
}
}
}
依赖关系
~13–26MB
~399K SLoC