Turso
根据其 官方网站 描述,Turso 是一个以 libSQL 为驱动的边缘 SQLite 数据库作为服务。
Drizzle ORM 原生支持 libSQL 驱动程序,我们采用 SQL 方言和方言特定的驱动程序和语法,并模拟最流行的类似 SQLite 的 all
、get
、values
和 run
查询方法的语法。
除非您打算手动编写每个 SQL 查询,否则表声明非常有用:
有关列类型的更多详细信息,请参阅 Drizzle 中的 SQLite 列类型。
Cloudflare D1
根据其 官方网站 描述,D1 是 Cloudflare 的第一个可查询关系数据库。
Drizzle ORM 完全支持 Cloudflare D1 数据库和 Cloudflare Workers 环境。
我们采用 SQL 方言和方言特定的驱动程序和语法,并模拟最流行的类似 SQLite 的 all
、get
、values
和 run
查询方法的语法。
要为您的 Cloudflare D1 设置项目,请参阅 官方文档。
初始化本地数据库并在本地运行服务器:
安装 Drizzle ORM:
进行第一个 D1 查询:
除非您打算手动编写每个 SQL 查询,否则表声明非常有用:
有关列类型的更多详细信息,请参阅 Drizzle 中的 SQLite 列类型。
Bun SQLite
根据其 官方网站 描述,Bun 是一个快速的全能的 JavaScript 运行时。
Drizzle ORM 原生支持 bun:sqlite
模块,而且速度非常快 🚀
我们采用 SQL 方言和方言特定的驱动程序和语法,并与其他任何 ORM 不同,
对于像是 bun:sqlite
这样的同步驱动程序,我们同时具有 async 和 sync API,并且我们模拟了最流行的类似 SQLite 的 all
、get
、values
和 run
查询方法的语法。
除非您打算手动编写每个 SQL 查询,否则表声明非常有用:
有关列类型的更多详细信息,请参阅 Drizzle 中的 SQLite 列类型。
如果要使用 sync API:
有关 sqlite 的 sync 和 async API 的更多信息 - 请阅读此处。
Expo SQLite
根据其 官方网站 描述,Expo 是基于 React Native 开发、构建和发布应用程序的工具生态系统。
它由 Hermes JavaScript 运行时和 Metro bundler 提供动力,Drizzle Expo 驱动程序旨在原生支持这两者。
Drizzle ORM 在 Expo SQLite 中拥有最佳的工具包:
实时查询
使用 useLiveQuery
钩子,您可以使任何 Drizzle 查询具有响应性:
使用 Drizzle Kit 进行 Expo SQLite 迁移
您可以使用 Drizzle Kit 生成 SQL 迁移。在进行下一步之前,请确保查看 Drizzle Kit 迁移 的工作原理。
Expo / React Native 要求您将 SQL 迁移捆绑到应用程序中,我们已为您提供覆盖。
安装 babel 插件
必须直接将 SQL 迁移文件作为字符串捆绑到您的包中。
更新配置文件
您需要更新 babel.config.js
,metro.config.js
和 drizzle.config.ts
文件
确保在 Drizzle Kit 配置中拥有 dialect: 'sqlite'
和 driver: 'expo'
生成迁移
在创建 SQL 模式文件和 drizzle.config.ts 文件之后,您可以生成迁移
添加迁移到您的应用程序
现在需要从 ./drizzle
文件夹导入 migrations.js
文件到 Expo/React Native 应用程序中。
您可以在应用程序启动时使用我们的自定义 useMigrations
迁移钩子运行迁移,也可以在 useEffect
钩子中手动运行。
OP SQLite
根据其 官方网站 描述,OP-SQLite 嵌入了最新版本的 SQLite,并提供了一个执行 SQL 查询的低级 API。
您可以使用 Drizzle Kit 生成 SQL 迁移。在进行下一步之前,请确保查看 Drizzle Kit 迁移 的工作原理。
OP SQLite 要求您将 SQL 迁移捆绑到应用程序中,我们已为您提供覆盖。
安装 babel 插件
必须直接将 SQL 迁移文件作为字符串捆绑到您的包中。
更新配置文件
您需要更新 babel.config.js
,metro.config.js
和 drizzle.config.ts
文件
确保在 Drizzle Kit 配置中拥有 dialect: 'sqlite'
和 driver: 'expo'
生成迁移
在创建 SQL 模式文件和 drizzle.config.ts 文件之后,您可以生成迁移
添加迁移到您的应用程序
现在需要从 ./drizzle
文件夹导入 migrations.js
文件到 Expo/React Native 应用程序中。
您可以在应用程序启动时使用我们的自定义 useMigrations
迁移钩子运行迁移,也可以在 useEffect
钩子中手动运行。
React Native SQLite
请使用 Expo SQLite
在 React Native 应用程序中运行 Drizzle ORM。
我们发现唯一的 流行库 不支持新的 Hermes JavaScript 运行时,
而新的 Hermes JavaScript 运行时现在是 React Native 和 Expo 的开箱即用标准运行时。
better-sqlite3
根据其 官方网站 描述,BetterSqlite3 是 Node.js 中最快、最简单的 SQLite3 库。
Drizzle ORM 采用 SQL 方言和方言特定的驱动程序和语法,并且与任何其他 ORM 不同,
对于像是 better-sqlite3
这样的同步驱动程序,我们同时具有 async 和 sync API,并且我们模拟了最流行的类似 SQLite 的 all
、get
、values
和 run
查询方法的语法。
除非您打算手动编写每个 SQL 查询,否则表声明非常有用:
有关列类型的更多详细信息,请参阅 Drizzle 中的 SQLite 列类型。
ℹ️
如果您的 db.insert()
返回数据,请在查询中添加 all()
,否则添加 run()
如果要使用 sync API:
有关 sqlite 的 sync 和 async API 的更多信息 - 请阅读此处。
HTTP 代理
Drizzle ORM 还支持使用异步回调函数进行执行 SQL。
-
sql
是带有占位符的查询字符串。
-
params
是参数的数组。
-
根据 SQL 语句,method
的值将设为 run
、all
、values
或 get
。
Drizzle 始终等待返回值为 {rows: string[][]}
或 {rows: string[]}
。
-
当 method
为 get
时,您应该返回一个值为 {rows: string[]}
的对象。
-
否则,您应返回 {rows: string[][]}
的对象。
批量支持
Sqlite 代理支持批量请求,与所有其他驱动程序一样。查看完整的 文档。
您需要为批量查询指定一个特定的回调函数,并处理对代理服务器的请求:
然后,您可以使用 db.batch([])
方法,该方法将代理所有查询。
💡
批处理的响应应为原始值数组(数组内的数组),顺序与发送到代理服务器的顺序相同。
除非您打算手动编写每个 SQL 查询,否则表声明非常有用:
有关列类型的更多详细信息,请参阅 Drizzle 中的 SQLite 列类型。