SQLite3数据库的介绍和使用教程(面向业务编程-数据库)

SQLite3数据库的介绍和使用教程

什么是SQLite3数据库

SQLite 是一种关系型数据库管理系统,是一个开源的轻型数据库系统,它的存储是基于文件系统的。

一般情况下,SQLite3 被认为是以文件为载体的数据库,它的操作速度快,文件占用内存小,适用于小型应用程序(如手机App等)。但是,SQLite3 并不是不支持应用程序的高并发访问,只是sqlite3采用的是锁机制限制同时访问的进程数。

SQLite3 使用 SQL 作为其操作语言。SQLite3 内置了一个命令行程序(sqlite3),它允许用户在没有第三方监测工具的情况下创建、使用和管理 SQLite 数据库。

SQLite3数据库的安装

在绝大多数系统版本的操作系统中,SQLite都已经预装了。如果没有,可以参考以下步骤进行安装。

Windows系统下安装SQLite3

  1. 下载 SQLite3下载链接,选择最新的编译版本。推荐下载 sqlite-dll-win64-x64-[版本号].zip。

  2. 解压下载后的文件。

  3. 将解压后的文件夹添加至系统环境变量的PATH中。具体步骤是:选中“此电脑”(该电脑),右键选择“属性”,选择“高级系统设置”,选择“环境变量”,找到“系统变量”中的“Path”,选择编辑,将SQLite解压路径添加就可以。

  4. 打开cmd命令行,输入sqlite3,如果出现以下提示,则说明安装成功。

bash
SQLite version 3.33.0 2020-08-14 13:23:32
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>

Linux系统下安装SQLite3

  1. 打开终端,输入以下命令:

bash
sudo apt-get update
sudo apt-get install sqlite3 libsqlite3-dev

  1. 如果成功则输入以下命令可查看是否安装成功:

bash
sqlite3

SQLite3数据库的基本操作

1. 创建数据库

可以通过如下命令创建一个名为test.db的SQLite3数据库。

sqlite3 test.db

此时,新建的数据库会自动保存在当前目录下。

2. 创建表格

创建表格的语法如下:

CREATE TABLE table_name(
    column1 datatype,
    column2 datatype,
    column3 datatype,
   .....
    columnN datatype,
    PRIMARY KEY( one or more columns )
);

例如,我们创建一个名为Employee的表,列名分别为ID、Name、Salary和Department。

CREATE TABLE Employee(
   ID INT PRIMARY KEY      NOT NULL,
   NAME           TEXT     NOT NULL,
   AGE            INT      NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

3. 插入数据

插入数据的语法如下:

 INSERT INTO table_name (column1,column2 ,column3,...columnN)
 VALUES (value1,value2 ,value3,...valueN);

例如,我们向Employee表插入一条数据,该数据ID为1,姓名为"张三",年龄为22,地址为"浙江省杭州市",工资为8888.50。

INSERT INTO Employee (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, '张三', 22, '浙江省杭州市', 8888.50);

4. 查询数据

查询数据的语法如下:

SELECT column1, column2, columnN FROM table_name;

例如,我们查找Employee表中的所有数据。

SELECT * FROM Employee;

5. 更新数据

更新数据的语法如下:

UPDATE table_name SET column1 = value1, column2 = value2...., columnN = valueN WHERE [condition];

例如,我们将Employee表中的Address字段中ID为1的数据地址修改为"浙江省宁波市"。

UPDATE Employee SET ADDRESS = '浙江省宁波市' WHERE ID = 1;

6. 删除数据

删除数据的语法如下:

DELETE FROM table_name WHERE [condition];

例如,我们删除Employee表中ID为1的一条记录。

DELETE FROM Employee WHERE ID = 1;

SQLite3数据库应用示例

示例一:Python使用SQLite3进行操作

Python自带SQLite3库,我们可以在Python中轻易地对SQLite3数据库进行操作。

在前提需要先安装sqlite库:

pip install pysqlite3

接着,我们新建test.db数据库,并在该数据库中创建Employee表。代码如下:

import sqlite3

# 连接数据库
conn = sqlite3.connect('test.db')

# 创建游标
c = conn.cursor()

# 创建Employee表
c.execute('''CREATE TABLE Employee (
            ID INT PRIMARY KEY      NOT NULL,
            NAME           TEXT     NOT NULL,
            AGE            INT      NOT NULL,
            ADDRESS        CHAR(50),
            SALARY         REAL);''')

# 向Employee表中插入一条数据
c.execute("INSERT INTO Employee (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, '张三', 22, '浙江省杭州市', 8888.50);")

# 查询Employee表中的所有数据
result = c.execute("SELECT * FROM Employee;")
for row in result:
   print(row)

# 提交
conn.commit()

# 关闭连接
conn.close()

执行之后,将输出Employee表中的所有数据。

示例二:SQLite3使用Django进行操作

Django是Python Web框架,它也内置了SQLite3数据库。我们可以在Django项目中使用SQLite3数据库。

首先,需要新建一个Django项目:

django-admin startproject test_django

接着,我们在项目的settings.py中添加数据库配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

然后,我们新建一个应用:

python manage.py startapp testapp

接着,我们在该应用的models.py中定义一个表格:

from django.db import models

# 创建Employee表
class Employee(models.Model):
    ID = models.AutoField(primary_key=True)
    NAME = models.CharField(max_length=20)
    AGE = models.IntegerField()
    ADDRESS = models.CharField(max_length=50)
    SALARY = models.DecimalField(max_digits=10, decimal_places=2)

    class Meta:
        db_table = "employee"

接着,我们在该应用的views.py中定义一个查询函数,查询Employee表中的所有数据:

from testapp.models import Employee

def listEmployee(request):
    list = Employee.objects.all()

    return render(request, 'index.html', {'list': list})

最后,我们在templates文件夹中新建一个index.html文件,展示查询到的数据:

<!DOCTYPE html>
<html>
<head>
    <title>查询结果</title>
</head>
<body>
    <table>
        <thead>
            <tr>
                <th>ID</th>
                <th>姓名</th>
                <th>年龄</th>
                <th>地址</th>
                <th>工资</th>
            </tr>
        </thead>
        <tbody>
            {% for item in list %}
            <tr>
                <td>{{ item.ID }}</td>
                <td>{{ item.NAME }}</td>
                <td>{{ item.AGE }}</td>
                <td>{{ item.ADDRESS }}</td>
                <td>{{ item.SALARY }}</td>
            </tr>
            {% endfor %}
        </tbody>
    </table>
</body>
</html>

执行 python manage.py runserver 启动Django开发服务器,访问http://127.0.0.1:8000,则可以看到查询到的结果。

至此,我们已经学会了如何在Python中使用SQLite3库进行操作,以及如何在Django项目中使用SQLite3数据库。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SQLite3数据库的介绍和使用教程(面向业务编程-数据库) - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • DBMS中游标和触发器的区别

    接下来我将详细解释DBMS中游标和触发器的区别。 游标和触发器的定义 游标和触发器都是DBMS中的重要概念,但它们的含义却不同。 游标:是在SQL语句执行中,对于一组数据结果的读取,可以将其理解为指针,指向关系数据库系统的某行,并允许程序对该行执行操作。因此,游标是一种用于遍历结果集的高级机制,可以理解为一个指向表格中数据行的指针。 触发器:是一段存储在关系…

    database 2023年3月27日
    00
  • CouchDB 和关系数据库的区别

    CouchDB是一个面向文档的数据库,与关系数据库有很大的区别。下面我们来详细讲解它们的区别。 1.文档模型的区别: CouchDB中的文档是一个JSON对象,没有固定的表格或列。 关系数据库中的数据是存储在表格中的。 例如,如果我们存储一篇博客文章,使用CouchDB可以将其存储为一个JSON对象,其键包括作者、标签、内容等。而在关系数据库中,需先定义好文…

    database 2023年3月27日
    00
  • ASP.net与SQLite数据库通过js和ashx交互(连接和操作)

    下面是关于ASP.net与SQLite数据库通过js和ashx交互(连接和操作)的完整攻略。 简介 ASP.net是一种基于微软的.NET平台的Web应用程序框架,而SQLite则是一种嵌入式关系型数据库。在本攻略中,我们将通过在ASP.net项目中使用JavaScript(js)和ASHX(一种用于处理HTTP请求的通用处理程序)来实现与SQLite数据库…

    database 2023年5月22日
    00
  • mysql 查询数据库中的存储过程与函数的语句

    查询数据库中的存储过程与函数需要使用到mysql系统库中的information_schema表。以下是基于MySQL 5.7版本以上的完整攻略: 查询所有存储过程的语句 SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM information_schema.ROUTINES WHERE ROUTINE_TYPE=’P…

    database 2023年5月21日
    00
  • Mysql事务中Update是否会锁表?

    在 MySQL 中,事务是一组被视为单一单位的 SQL 语句,这些语句要么全部执行,要么全部不执行。当在事务中进行数据修改操作时,往往需要了解这些操作是否会锁表,特别是在高并发的情况下,避免因锁表而导致性能下降或失误。下面分别针对 Update 是否会锁表进行详细讲解。 Update 是否会锁表? MySQL 的 InnoDB 存储引擎采用了多版本并发控制(…

    database 2023年5月19日
    00
  • SQL Server简单模式下误删除堆表记录恢复方法(绕过页眉校验)

    SQL Server简单模式下误删除堆表记录恢复方法(绕过页眉校验) 背景 SQL Server是一种常见的关系型数据库管理系统,堆表是其一种表的存储形式。在误删除堆表记录并进行回滚时,如果数据库处于简单模式下,数据不可恢复。本攻略在简单模式下误删除堆表记录并绕过页眉校验,实现数据恢复。 简单模式下误删除堆表记录 在SQL Server中,简单模式下的事务处…

    database 2023年5月21日
    00
  • Redis 根据key获取所有 HashKey

    前一段时间,做项目的时候遇到一个问题,就是如果缓存的时候使用 HashKey,那么如何能通过key获取所有的HashKey的值,通过百度发现没有直接答案,没办法就看了下redis的使用,通过查找发现有“entries”方法可以做到,接下来我们看具体代码。 import java.util.List; /** * @Package com.ywtg.commo…

    Redis 2023年4月11日
    00
  • EF(EntityFramework) 插入或更新数据报错的解决方法

    下面是关于“EF(EntityFramework) 插入或更新数据报错的解决方法”的完整攻略: 1. 描述问题 在使用EntityFramework进行数据操作时,插入或更新数据时可能会出现以下报错信息: DbUpdateConcurrencyException: Store update, insert, or delete statement affec…

    database 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部