sqlite使用

来源:互联网 发布:美德少年网络寄语网址 编辑:程序博客网 时间:2024/06/05 03:43

1.SQLite 命令行命令

进入交互模式sqlite3退出交互模式.quit创建数据库sqlite3 DatabaseName.db在命令提示符中使用 SQLite .dump 点命令来导出完整的数据库在一个文本文件中sqlite3 testDB.db .dump > testDB.sql恢复数据库文件$sqlite3 testDB.db < testDB.sql

2.sqlite3 支持的数据类型

NULL    值是一个 NULL 值。INTEGER 值是一个带符号的整数,根据值的大小存储在 123468 字节中。REAL    值是一个浮点值,存储为 8 字节的 IEEE 浮点数字。TEXT    值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。BLOB    值是一个 blob 数据,完全根据它的输入存储。-----SQLite 没有一个单独的用于存储日期和/或时间的存储类,但 SQLite 能够把日期和时间存储为 TEXT、REAL 或 INTEGERTEXT    格式为 "YYYY-MM-DD HH:MM:SS.SSS" 的日期。REAL    从公元前 47141124 日格林尼治时间的正午开始算起的天数。INTEGER1970-01-01 00:00:00 UTC 算起的秒数。

3.常用字段类型

CREATE TABLE IF NOT EXISTS ex2(      a VARCHAR(10),      b NVARCHAR(15),c TEXT,d INTEGER,e FLOAT,f BOOLEAN,      g CLOB,      h BLOB,      i TIMESTAMP,     j NUMERIC(10,5),      k VARYING CHARACTER (24),      l NATIONAL VARYING CHARACTER(16)     );CHAR: CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充VARCHAR: 存储变长数据,但存储效率没有CHAR高。从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点TEXT: text存储可变长度的非Unicode数据NCHAR、NVARCHAR、NTEXT: 这三种从名字上看比前面三种多了个“N”。它表示存储的是Unicode数据类型的字符.我们知道字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在14000之间。和char、varchar比较起来,nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。

4.日期处理

sqlite可以把日期保存为字符串SQLite包含了如下时间/日期函数:datetime() .......................  产生日期和时间date()  ........................... 产生日期time()  ........................... 产生时间strftime() .......................  对以上三个函数产生的日期和时间进行格式化举例:select datetime('now');select datetime('2006-10-17');select datetime('2006-10-17 00:20:00', '+1 hour', '-12 minute');select date('2006-10-17', '+1 day', '+1 year');select datetime('now', 'start of year');select datetime('now', '+10 hour', 'start of day', '+10 hour');select datetime('now', 'localtime');  # 把格林威治时区转换成本地时区。select strftime('%Y/%m/%d %H:%M:%S', 'now', 'localtime');

5.sqlite3 sql 语法

创建表sqlite> CREATE TABLE COMPANY(   ID             INT     PRIMARY KEY     NOT NULL,   NAME           TEXT    NOT NULL,   AGE            INT     NOT NULL,   ADDRESS        CHAR(50),   SALARY         REAL);列出所有表sqlite>.tables列出表的完整信息.schema COMPANY

6.python 接口

这里没有使用cursor, 暂时用不到#!/usr/bin/pythonimport sqlite3conn = sqlite3.connect('test.db')          -------连接到一个现有的数据库。如果数据库不存在,那么它就会被创建conn.execute('''CREATE TABLE COMPANY       ------在 test.db 中创建 COMPANY 表       (ID INT PRIMARY KEY     NOT NULL,       NAME           TEXT    NOT NULL,       AGE            INT     NOT NULL,       ADDRESS        CHAR(50),       SALARY         REAL);''')conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \              VALUES (1, 'Paul', 32, 'California', 20000.00 )");            --------插入数据conn.commit()cursor = conn.execute("SELECT id, name, address, salary  from COMPANY")     -----查询for row in cursor:                                                      -----使用list(cursor)应该可以获取完整数据以list类型   print "ID = ", row[0]   print "NAME = ", row[1]   print "ADDRESS = ", row[2]   print "SALARY = ", row[3], "\n"conn.close()                            ----- 关闭
0 0
原创粉丝点击