知行迭代
导航
首页
最近更改
随机页面
常用
分类目录
Linux命令
Mediawiki常用
电脑技巧
工具
链入页面
相关更改
特殊页面
页面信息
登录
查看“SQLite”的源代码
←
SQLite
页面
讨论
阅读
查看源代码
查看历史
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:[
[1]
]
您可以查看和复制此页面的源代码。
SQLite是遵守ACID的[[关系数据库]]管理系统,它包含在一个相对小的[[C]]程序库中。与许多其它数据库管理系统不同,SQLite不是一个客户端/服务器结构的数据库引擎,而是被集成在用户程序中。 SQLite遵守ACID,实现了大多数[[SQL]]标准。它使用动态的、弱类型的SQL语法。SQLite的代码和文档都置于[[公有领域]],任何人可以免费自由的用于商业和非商业。 ==简介== ===时间轴=== *2000年8月17日,发布初始版本SQLite 1.0 *2001年09年28日,发布SQLite 2.0.0 *2004年06年18日,发布SQLite 3.0.0 *2019年10日10日,发布SQLite 3.30.1 ==数据类型== 所有存入SQLite数据库的值都被保存为下表5中类型之一: {| class="wikitable" style="width: 100%; |- ! SQLite类型 ! 描述 ! 从Python类型转入 ! 默认转换为Python类型 |- | NULL | 空值 | None | None |- | INTEGER | 整数,根据值的大小存储,最大8字节,即最大2^63-1=9223372036854775807。 | int | int |- | REAL | 浮点数, 存储为 8 字节的 IEEE 浮点数字。 | float | float |- | TEXT | 文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。 | str | 取决于 text_factory , 默认为 str |- | BLOB | 二进制值,直接存储,不经过转换,如存储图片等。 | bytes | bytes |} 布尔值在SQLite没有单独的存储类,使用INTEGER类的0 (false) 和 1 (true)存储。 SQLite也没有单独的日期时间数据类型,而是通过内置的时间日期函数,使用TEXT, REAL, 或INTEGER数据类型保存值。如下: * TEXT,ISO8601格式的字符串 "YYYY-MM-DD HH:MM:SS.SSS" * REAL,以Julian day numbers(公元前4713年1月1日中午12点)为起点开始计算,整数部分是天数,小数部分是当天时间数。 * INTEGER,unix时间戳,以1970-01-01 00:00:00 UTC为起点计算。 一般数据库每列数据为固定类型,但SQLite中可以将不同类型数据存储到同一列。为了最大化与和其他SQL数据库引擎之间的兼容性,SQLite使用一种"类型亲和性"(Type Affinity)概念。列的亲和类型是指该列的主要数据类型,当能够转化为该数据类型就转化,不能转化就按原数据类型存储。 {{了解更多 |[https://www.sqlite.org/datatype3.html SQLite文档:SQLite 3 数据类型] |[https://docs.python.org/zh-cn/3.8/library/sqlite3.html#sqlite-and-python-types python文档:sqlite3-SQLite 与 Python 类型] |[https://www.sqlite.org/limits.html SQLite文档:限制列表] }} ==日期和时间== ===函数=== SQLite有5个日期和时间函数,每个函数都有一个参数时间字符串(timestring),后面跟着零个或多个参数修饰符(modifier)字符串。strftime()函数多一个参数格式化字符串(format),作为其第一个参数。其中strftime()函数是最基础函数,其他4个函数都可以用strftime()表示。提供其他4个而不仅一个的函数,原因是使用更简单方便。 {| class="wikitable" ! 函数 !! 描述 !! 等同的strftime() !! 示例 |- | '''date'''(timestring, modifier, modifier, ...) || 返回日期 || strftime('%Y-%m-%d',modifier, modifier, ...)|| |- | '''time'''(timestring, modifier, modifier, ...) || 返回时间 || strftime('%H:%M:%S',modifier, modifier, ...)|| |- | '''datetime'''(timestring, modifier, modifier, ...)|| 返回日期时间 || strftime('%Y-%m-%d %H:%M:%S', modifier, modifier, ...)|| |- |'''julianday'''(timestring, modifier, modifier, ...) || 返回Julian day天数 || strftime('%J', modifier, modifier, ...)|| |- | '''strftime'''(format, timestring, modifier, modifier, ...) || 返回格式化的日期时间字符串 || strftime(format, timestring, modifier, modifier, ...)|| |} ===时间字符串 Time Strings=== 时间字符串(Time Strings)可以为下面任意一种格式: {| class="wikitable" |- ! 时间字符串格式 ! 时间字符串例 ! 使用示例 |- | YYYY-MM-DD | '2020-02-20' | date('2020-02-20', 'start of year') |- | YYYY-MM-DD HH:MM | | |- | YYYY-MM-DD HH:MM:SS | | |- | YYYY-MM-DD HH:MM:SS.SSS | | |- | YYYY-MM-DDTHH:MM | | |- | YYYY-MM-DDTHH:MM:SS | | |- | YYYY-MM-DDTHH:MM:SS.SSS | | |- | HH:MM | | |- | HH:MM:SS | | |- | HH:MM:SS.SSS | | |- | now | 'now' | <code>SELECT date('now');</code> 计算当前日期 |- | DDDDDDDDDD | | |} ===修饰符 Modifiers=== 时间字符串后面可以跟0个或多个修饰符(Modifiers)。修饰符的顺序很重要,修饰符是从左到右依次转换数值。 {| class="wikitable" ! 修饰符 !! 描述 !! 示例 |- | NNN days || || |- | NNN hours || || |- | NNN minutes || || |- | NNN.NNNN seconds || || |- | NNN months || || |- | NNN years || || |- | start of month || || |- | start of year || || |- | start of day || || |- | weekday N || || |- | unixepoch || || |- | localtime || || |- | utc || || |} {{了解更多 |[https://www.sqlite.org/lang_datefunc.html SQLite文档:日期与时间函数] }} ==SQL== SQLite支持大多数标准的[[SQL]]。但是它确实[https://www.sqlite.org/omitted.html 省略了一些功能] ,同时又增加了一些自己的功能。 ===选取数据=== ===删除数据=== 删除表中数据可以使用DELETE语句,使用时需注意指定删除那些记录,否则表中全部记录,DELETE语句格式如下: DELETE FROM 表名称 WHERE 条件; 如 {{了解更多 |[https://www.sqlite.org/lang.html SQLite 文档:SQLite 中的 SQL] }} ==Python中使用== ===Python标准库 sqlite3=== [[Python]]2.5及以上版本内置了sqlite3模块,在[[Python]]中使用SQLite,不需要安装任何东西,直接使用。sqlite3 模块由 Gerhard Häring 编写。它提供了符合 DB-API 2.0 规范的接口,这个规范是 PEP 249。 {{了解更多 |[https://docs.python.org/zh-cn/3.8/library/sqlite3.html Python文档:Python标准库-sqlite3] }} ===使用pandas函数操作数据库=== Pandas提供了一些数据库接口函数,使用方便。pandas操作SQLite数据库默认使用python的sqlite3模块。 ====read_sql()函数==== ====to_sql()函数==== {{了解更多 |[https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#sql-queries pandas 文档:IO接口 sql-queries] }} ===可能出现问题=== *问题:OperationalError: database is locked 可能由于前面使用写入数据库的连接没有关闭。使用后关闭 Connection 对象,比如前面设置Connection 对象实例的名称conn,调用conn.close()即可。 ==资源== ===官网=== *[https://www.sqlite.org/index.html SQLite 官网] *[https://www.sqlite.org/docs.html SQLite 文档] *[https://www.sqlite.org/cli.html SQLite 文档:sqlite3] ==参考文献== *[https://zh.wikipedia.org/wiki/SQLite 维基百科:SQLite] [[分类:数据库]]
本页使用的模板:
模板:SQLite数据类型表
(
查看源代码
)
模板:了解更多
(
查看源代码
)
返回至“
SQLite
”。