内容正文:
第二章
Chapter 2
信息系统的支撑技术
1
1
2
3
2.1 计算机硬件
4
2.4 传感与控制
2.2 计算机软件
2.3 移动终端
5
6
2.6 网络应用软件开发
2.5 网络系统
目录
问题提出
如何实现对话功能?
网页中输入的数据该如何处理?
数据要存在哪里?
数据库
由多张表以及表之间的关系组成,每张表有一名字标识,包含若干个字段列和记录数据的行
关系型数据库
常用的关系数据库管理系统有mysql,orcale,sql server
数据库管理系统
SQL是为操作数据库而开发的一种语言,它可以对数据库里的表进行操作,比如修改数据,查找数据。
SQL语句
SQLite数据库
可视化工具
属于嵌入式数据库,进程内运行,不需要配置,可直接访问
Python内置sqlite3模块,可以驱动SQLite
扩展名.db
SQLite数据库是一款轻量级、跨平台的,关系型数据库,具有独立性、零配置、开放性、占用资源低等特点
SQLite数据库
Sqlite3整体使用使用过程
导入
模块
连接数据库
创建游标对象
执行SQL命令
返回查询结果
提交保存数据
关闭游标,数据库
SQLite数据库
sql命令
创建表 create table 表名(字段名 字段类型,字段名 字段类型,……))
例 create table temp(time TEXT,data TEXT))
插入数据 insert into 表名(字段名1,字段名2)values(对应值1,值2)
例 insert into temp(time,data) VALUES(1022,22)
查询 select * from 表名 [where 条件]
例select * from temp
更新 update 表名 set 字段名=值 [where 条件]
例update temp set data=20
删除 delete from 表名 [where 条件]
例delete from temp where data=32
SQL语句字符不区分大小写
SQLite数据库
任务一
利用SQLite Studio 打开SQL编辑器
对student数据表完成以下操作:
创建一张包含学号,姓名,成绩字段的数据表
查询xinxi表中性别为“女”的学生
修改“小华”的学号为2023005
增加一条记录 (2023008,小李,男)
SQLite数据库
sqlites3
sqlite3数据库API
con=sqlite3.connect("data.db") 连接数据库(如果存在会直接打开,否则会自动创建)
cur=con.cursor() 创建游标(指针)
cur.execute() 执行SQL语句(可用问号为占位符)
cur.fetchall() 查询所有行,返回列表;
con.commit() 提交修改操作(增删改都需要提交)
cur.close()/con.close() 关闭游标/关闭数据库连接
SQLite数据库
sqlites3
连接数据库:
import sqlite3 #导入sqlite3模块
con = sqlite3.connect(“student.db") #连接数据库,若数据库不存在则创建
connect方法返回con(数据库连接对象),有以下方法:
方法 描述
.cursor() 创建游标对象
.commit() 提交修改
.close() 关闭数据库连接
SQLite数据库
sqlites3
创建游标对象: cur = con.cursor()
游标对象有以下方法,操作数据库:
方法 描述
.execute() 执行sql语句
.fetchone() 获取一条记录,并将游标指向下一条记录
.fetchall() 用来从结果中去除所有记录
.close() 关闭游标
SQLite数据库
sqlites3
新建表:
cur.execute("CREATE TABLE IF NOT EXISTS chengji(xuehao TEXT, xingming TEXT)" ) #新建表chengji,若已有该表则忽略,并设置字段
IF NOT EXISTS :如果表存在,则不再新建
sqlite3常见字段类型
NULL 无效值
INTEGER 带符号的整数
REAL 浮点数(实数)
TEXT 字符串
BLOB 二进制,图片、声音等
SQLite数据库
sqlites3
插入数据:
cur.execute("INSERT INTO xinxi(xuehao,xingming) VALUES(?,?)" ,(xx,mm))
cur.execute("INSERT INTO xinxi(xuehao,xingming) VALUES(%d)"%data)
SQLite数据库
sqlites3
查询数据:
cur.execute("select * from xinxi") #设置要查询的表
data=cur.fetchall() #查询表中所有数据,返回列表
显示数据:
print(cur.fetchall())
for item in cur:
print(item)
SQLite数据库
sqlites3
保存并关闭:
con.commit() #提交,保存修改内容
cur.close()/con.close() #关闭游标/数据库连接
要关闭游标对象/数据库对象,释放资源,否则会报错
SQLite数据库
sqlites3
SQLite数据库
sqlites3
导入模块
import sqlite3
连接数据库
con = sqlite3.connect(“数据库名")
创建游标对象
cur = con.cursor()
执行SQL命令
cur.execute(SQL命令:select/insert into……)
返回查询结果
cur.fetchall()/cur.fetchone()
提交保存数据
con.commit()
关闭游标,数据库
cur.close()/con.close()
聊天对话功能的实现
是XML格式的标签,用于开发人工智能应用程序,基于对话模板匹配,可以快速实现机器人聊天对话
聊天对话功能的实现
AIML人工智能标记语言
根目录下分别建.xml和.aiml格式文件;
聊天对话功能的实现
AIML人工智能标记语言
AIML语言基本标签
<aiml> 定义在AIML文件的开头、结尾
<category> 定义知识单元,对话内容
<pattern> 定义模式匹配用户输入的内容
<template> 定义对用户输入的响应
<li> 表示多个响应
<random> 用于获取随机响应
<*> 通配符
20
聊天对话功能的实现
AIML人工智能标记语言
启动文件:cn-startup.xml
<aiml version="1.0" encoding="UTF-8"> #aiml版本,编码属性
<category>
<pattern>LOAD AIML CN</pattern> #定义匹配内容
<template> #匹配输入的响应
<learn>Greeting.aiml</learn> #加载.aiml文件
<learn>Discuss.aiml</learn>
<learn>Food.aiml</learn>
</template>
</category>
</aiml>
21
聊天对话功能的实现
AIML人工智能标记语言
创建AIML文件:Greeting.aiml
<?xml version="1.0" encoding="UTF-8"?>
<aiml>
<category>
<pattern>你好</pattern> #匹配用户输入
<template> #响应内容
<random>
<li>你好~</li>
<li>Hi~</li>
</random>
</template>
</category>
<category>……</category>
</aiml>
22
聊天对话功能的实现
AIML人工智能标记语言
from flask import Flask,render_template #导入网页模板支持模块
import aiml #导入aiml库
k = aiml.Kernel() #创建aiml对象
k.learn('cn-startup.xml') #学习xml格式的启动文件
k.respond('load aiml cn') #加载aiml聊天文件
app=Flask(__name__)
@app.route('/',methods=['GET','POST'])
def index():
return render_tempalte(‘index.html’)
if __name__ == '__main__':
app.run(host="192.168.7.161",port=8080)
23
网络应用的调试与发布
run()函数参数
host(IP),port(端口号)参数可以实现远程访问,
debug参数可以设定是否打开调试模式,默认否
flask-script模块
Server,Manager提供了插入外部脚本的功能,
应用该模块后可以直接调用 python 文件名.py runserver 命令运行
24
聆
听
谢
谢
25
$$