21个版本

0.1.20 2023年12月28日
0.1.19 2023年10月7日
0.1.18 2023年6月8日
0.1.17 2023年2月13日
0.1.7 2021年1月29日

#998数据库接口

Download history 39/week @ 2024-03-23 5/week @ 2024-03-30

每月101 次下载

MIT/Apache

30KB
625

SQLite解析器

Latest Version Build Status

使用方法

此crate将使解析SQLite数据库变得容易。这对于代码生成很有用。

在您的Cargo.toml文件中,通过添加以下行来添加对此crate的依赖关系:

sqlite_parser= "*"

然后实现Parser特质并使用实现struct和SQLite文件的位置调用parse函数。还有一个不需要实现Parser特质的方便方法,即parse_no_parser

调用解析器

使用此库有两种方式

  • 实现Parser特质并调用parse函数。
use sqlite_parser::{parse, Parser, Table, Metadata};

/// Create a parse struct to process the tables
/// Note: there is a convenience method `parse_no_parser` that doesn't require a parser.

struct Parse;
impl Parser for Parse {
    fn process_tables(&mut self, meta_data: Metadata) {
        // Do something with the tables
    }
}

/// Start the parsing
parse(&my_sqlite_file_location, &mut Parse { });
  • 不实现Parser特质并调用parse_no_parser函数。
use sqlite_parser::parse_no_parser;

/// Start the parsing
let _tables = parse_no_parser(&my_sqlite_file_location);
/// Do stuff with the tables property!

它会解析什么?

  • 表格 -> 表示SQLite中的表
    • Table_name -> 表名
    • [Columns] -> 表的列
      • Id -> 列的id(从0开始,并为每个创建的列递增)
      • Name -> 列名
      • 列的类型(Text,Numeric,Blob,Real,Integer)
      • Nullable -> 检查列是否可为空
      • 主键的一部分 -> 检查此列是否为主键的一部分
    • [Foreign keys] -> 表的外键
      • Id -> 外键的id
      • Table -> 它引用的表
      • [From_column] -> 它引用的列(自己的表)
      • [To_column] -> 它引用的列(引用表)

依赖项

~22MB
~425K SLoC