栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

儿童python教程248:Python SQLite创建数据表(看了无师自通)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

儿童python教程248:Python SQLite创建数据表(看了无师自通)

和很多其他数据库管理系统不同,SQLite 不是一个客户端 / 服务器结构的数据库引擎,而是一种嵌入式数据库,它的数据库其实就是一个文件。SQLite 将整个数据库(包括定义、表、索引以及数据本身)作为一个单独的、可跨平台使用的文件存储在主机中。

由于 SQLite 本身是用 C 写的,体积很小,所以经常被集成到各种应用程序中,Python 就内置了 SQLite 3。因此,在 Python 中使用 SQLite,不需要安装任何模块,使用 import 语句引入即可使用。

我们知道,程序只要通过数据库连接对象打开游标,接下来就可以用游标来执行 DDL 语句(创建表、修改表或删除表)。那么,如何获取连接对象呢?这就需要使用 connect() 函数。

使用 connect() 函数可以打开或创建一个数据库,例如如下代码:

conn = sqlite3.connect('first.db')

上面代码就用于打开或创建一个 SQLite 数据库。如果 first.db 文件(该文件就是一个数据库)存在,那么程序就是打开该数据库;反之,如果该文件不存在,则会在当前目录下创建相应的文件。

因此,初次执行上面代码,将会在当前目录下创建一个 first.db 文件,如果程序希望创建内存中的数据库,则只需将 first.db 改为特殊名称 :memory: 即可。

如下程序示范了如何创建数据表:

# 导入访问SQLite的模块

import sqlite3

# ①、打开或创建数据库

# 也可以使用特殊名::memory:代表创建内存中的数据库

conn = sqlite3.connect('first.db')

# ②、获取游标

c = conn.cursor()

# ③、执行DDL语句创建数据表

c.execute('''create table user_tb(

    _id integer primary key autoincrement,

    name text,

    pass text,

    gender text)''')

# 执行DDL语句创建数据表

c.execute('''create table order_tb(

    _id integer primary key autoincrement,

    item_name text,

    item_price real,

    item_number real,

    user_id inteter,

    foreign key(user_id) references user_tb(_id) )''')

# ④、关闭游标

c.close()

# ⑤、关闭连接

conn.close()
上面程序使用 ①~⑤ 清晰地标出了使用 Python DB API 2.0 执行数据库访问的步骤。

上面程序中第 ③ 步执行了两次,每次分别执行一条 create 语句,因此该程序执行完成后,将会看到在当前数据库中包含两个数据表 user_tb 和 order_tb,且在 order_tb 表中有一个外键列引用 user_tb 表的 _id 主键列。

程序中第 ③ 步使用 execute() 方法执行的就是标准的 DDL 语句,因此只要读者拥有 SQL 语法知识,就可以使用 Python DB API 模块来执行这些 SQL 语句,非常简单。

SQLite 数据库所支持的 SQL 语句与 MySQL 大致相同,开发者完全可以把已有的 MySQL 经验“移植”到 SQLite 数据库上。当然,当 Python 程序提示某条 SQL 语句有语法错误时,**好先利用 SQLite 数据库管理工具(后续章节介绍)来测试这条语句,以保证这条 SQL 语句的语法正确。

需要指出的是,SQLite 内部只支持 NULL、INTEGER、REAL(浮点数)、TEXT(文本)和 BLOB(大二进制对象)这 5 种数据类型,但实际上 SQLite 完全可以接受 varchar(n)、char(n)、decimal(p, s) 等数据类型,只不过 SQLite 会在运算或保存时将它们转换为上面 5 种数据类型中相应的类型。

除此之外,SQLite 还有一个特点,就是它允许把各种类型的数据保存到任何类型的字段中,开发者可以不用关心声明该字段所使用的数据类型。例如,可以把字符串类型的值存入 INTEGER 类型的字段中,也可以把数值类型的值存入布尔类型的字段中……但有一种情况例外,被定义为“INTEGER PRIMARY KEY”的字段只能存储 64 位整数,当使用这种字段保存除整数以外的其他类型的数据时,SQLite 会产生错误。

由于 SQLite 允许在存入数据时忽略底层数据列实际的数据类型,因此在编写建表语句时可以省略各数据列后面的类型声明。例如,对于 SQLite 数据库如下 SQL 语句也是正确的:

create table my_test
{
    _id_integer primary key autoincrement,
    name,
    pass,
    gender
};


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/805907.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号