文档章节

web6课堂回顾

泠泠七弦客
 泠泠七弦客
发布于 2016/06/16 11:39
字数 1149
阅读 41
收藏 0
点赞 0
评论 0

1.sql是什么?什么是sqlite?

SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言(结构化查询语言)。 在使用它时,只需要发出“做什么”的命令,“怎么做”不用使用者考虑的。 包括了‘增删查改’一些命令

sqlite是数据库引擎,也是数据库管理系统,集成在用户程序中。比方Python有sqlite3,我们使用的时候用指令:import sqlite3

两者是不一样的。前者是语言,后者是轻型数据库

2.数据库管理软件及其使用

我们用的是SQLite browser,数据库管理软件就是用可视化图形化的界面来实现语言编写。可以想象一下windows系统和dos系统,前者是可视化,后者是使用语言命令。这就是区别.

先要理解一个概念就是,一个数据库是一个文件,而每个文件中可以有多个表(看个人自己意愿),一个表示包含了多个字段,最终每个字段就表示了一个信息。

最最重要的一点就是,当点击完ok以后返回到主界面,如图,一定要write changes,相当于编辑完文档一定要保存一样

浏览表干嘛呢?就是添加value的,如下图,需要注意的是,还是write changes一定要点击

3.Python中语言命令创建

先看看萧大给的语言吧

# 数据库以表的形式存储数据
# 一个表 有很多个字段

# 以用户表为例
# 用户 id
# 用户名
# 密码
# 邮箱
#
# 1 gua 123 gua@qq.com
# 2 gua1 23 gua1@q.com

# SQL 结构化查询语言
# 操作数据库的接口 也就是操作数据库的方法
# 增加数据
# 删除数据
# 修改数据
# 查询数据
# CRUD
# create  retrieve update delete

"""
INSERT INTO
`users`(`id`,`username`,`password`,`email`)
VALUES \
    (2,'','',NULL);

UPDATE `users` SET `username`=? WHERE `_rowid_`='2';
UPDATE `users` SET `password`=? WHERE `_rowid_`='2';
UPDATE `users` SET `email`=? WHERE `_rowid_`='2';
"""

import sqlite3


# 以下是创建表,这里需要注意的是,create只需要执行一次就可以了
# 第一次没有数据库的时候创建,有了之后就把这个create注释掉
# 一般我们把SQL的关键字用大写,自己的数据用小写,这样方便以后的维护
# 可以注意到广泛的用到了``字符,这个字符是在!左边
def create(conn):
    sql_create = '''
    CREATE TABLE `users` (
        `id`	INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
        `username`	TEXT NOT NULL UNIQUE,
        `password`	TEXT NOT NULL,
        `email`	TEXT
    )
    '''
    conn.execute(sql_create)
    # 上句是执行的意思,这里的conn是指connect,在main已经定义好了
    print('创建成功')


# 以下是增加value的意思,以下用到?是为了防止SQL注入:本来要填写的是规范的数据,但是
# 用户或者输入了乱七八糟不被识别的数据,这个?就是为了防止这种情况
def insert(conn, username, password, email):
    sql_insert = '''
    INSERT INTO
        `users`(`username`,`password`,`email`)
    VALUES
        (?, ?, ?);
    '''
    conn.execute(sql_insert, (username, password, email))
    print('插入数据成功')


def select(conn, username):
    sql = '''
    SELECT
        *
    FROM
        users
    WHERE
    # 这个where以后的句子可以省略,这样的话最终返回的all是[(),()]这样的列表,包含了所有用户信息
        username=?
    '''
    # select * from users where username=?
    # 如上句把所有语句写在了同一行,是简便,但是不易读不易修改
    cursor = conn.execute(sql, (username,))
    all = cursor.fetchall()
    # 以上是获取所有数据,cursor只是一个变量,username用的是元组所以有逗号来区分
    print(all)
    return all


def delete(conn, user_id):
    sql_delete = '''
    DELETE FROM
        users
    WHERE
        id=?
    '''
    conn.execute(sql_delete, (user_id,))


# 以下修改数据的时候用口号隔开,当然也得用?来防止注入
# 注意了,这个函数里面user_id仅仅是个参数,而`id`这里是在数据库的表里面
# 新建的时候用的名字起的就是id,两个不一样。语句的含义是在where的id出更新pw和em数据
def update(conn, user_id, password, email):
    sql_update = '''
    UPDATE
        `users`
    SET
        `password`=?,
        `email`=?
    WHERE
        `id`=?
    '''
    # UPDATE `users` SET `password` =?,`email` =? WHERE `id` =?
    conn.execute(sql_update, (password, email, user_id))


def messages_by_owner_id(conn, owner_id):
    sql = '''
    SELECT
        *
    FROM
        messages
    WHERE
        `owner_id`=?
    '''
    cursor = conn.execute(sql, (owner_id,))
    all = cursor.fetchall()
    return all


def main():
    db_path = r'class6.sqlite'
    conn = sqlite3.connect(db_path)
    # create()
    print("Opened database successfully")
    # insert(conn, 'sql', '123', '')
    # delete(conn, 2)
    update(conn, 3, 'ai_ya', 'gua@cocode.cc')
    # select(conn, 'gua')
    # msgs = messages_by_owner_id(conn, 2)
    # print(msgs)
    conn.commit()
    conn.close()
# 以上必须有commit()就相当于write changes才能保证数据已经保存


if __name__ == '__main__':
    main()
    # print(type((1)))
    # print(type((1,)))

很多东西已注释过了,我们可以在sql管理器里面查看修改,就是这么粗暴简单。

© 著作权归作者所有

共有 人打赏支持
泠泠七弦客
粉丝 8
博文 15
码字总数 52049
作品 0
郑州
CentOS 6.9配置httpd-2.2.x虚拟主机的三种方式

一、配置基于IP的虚拟主机 1、 新增一个IP地址: # ip addr list | grep eth0 # ip addr add 192.168.199.100/24 dev eth0 # ip addr list | grep eth0 2、 创建目录及测试页面: # mkdir -p...

Marion0728 ⋅ 2017/10/09 ⋅ 0

lan Goodfellow IEEESSP最新演讲:对抗性实例安全性研究及其未来

     大数据文摘作品   作者:郑璇真   继上周密集更新的推特小课堂后,时刻操心着大家学习的Ian Goodfellow老师又发推文给大家开小灶了!   先来回顾一下上周的推特小课堂:   ...

大数据文摘 ⋅ 05/25 ⋅ 0

PMCAFF微课堂 | 前YY产品总监深度揭秘P2P运营推广精髓

1、在社区里认真发布一个问题; 2、把问题截图、截图、截图给微信提交审核即可进群 (PMCAFF小助手:pmcaffzs2,注意:已加过小助手的请勿重复添加); 注意:发布问题请补充详细的背景/条件...

pmcaff2008 ⋅ 2017/12/13 ⋅ 0

《deeplearning.ai》 课程一第四周 | Deep neural networks

deeplearning.ai 是机器学习领域大牛Andrew Ng在Coursera上公布的新的深度学习的课程,相比之前机器学习的课程,本课程更偏重于深度学习的领域。 本文是课程一《Neural Networks and Deep Le...

V怪兽 ⋅ 01/08 ⋅ 0

史上最简单的Hibernate4视频教程(附源码和笔记)

Hibernate4是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合...

2846613430 ⋅ 2016/04/08 ⋅ 0

Makeblock推出编程教学工具“慧编程”,融入AI和IoT助力老师打造高效课堂

“慧编程”基于青少年编程语言Scratch开发,提供一站式课堂管理平台,以帮助老师节省备课时间、降低编程教学难度。 4月26日,STEAM教育解决方案提供商Makeblock正式推出编程教学软件--慧编程...

行者武松 ⋅ 05/15 ⋅ 0

假装是我的总结

提笔忘字,自从大学毕业,已经3年了,基本没有在写过什么博客,什么总结,刚开始通过要写博客的时候,一开始我拒绝的,但是呢,(此处省略.....)..... 记得上一次写博客的时候,还要追述到大三...

TheNextOne ⋅ 2017/12/19 ⋅ 0

《deeplearning.ai》 课程一第二周 | Logistic Regression

deeplearning.ai 是机器学习领域大牛Andrew Ng在Coursera上公布的新的深度学习的课程,相比之前机器学习的课程,本课程更偏重于深度学习的领域。 本文是课程一《Neural Networks and Deep Le...

V怪兽 ⋅ 2017/12/14 ⋅ 0

2016年最新spring4框架搭建视频教程

Spring4.0作为一个广泛使用的开源 框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。 Spring4.0致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以...

2846613430 ⋅ 2016/04/11 ⋅ 0

《一堂课掌握 AI 自学路径图》分享笔记

1.前言 在上周六,看了掘金的课堂。这次的课堂和之前的不一样,因为这次涉及的领域是人工智能,讲的内容也是如何自学人工智能(AI)。这个主题,领域对于我自己而言,是一个关注但是陌生的主...

守候i ⋅ 05/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

oAuth2 升级Spring Cloud Finchley.RELEASE踩坑分享

背景 6.19号,spring团队发布了期待已久的 Spring Cloud Finchley.RELEASE 版本。 重要变化: 基于Spring Boot 2.0.X 不兼容 Spring Boot 1.5.X 期间踩过几个坑,分享出来给大伙,主要是关于...

冷冷gg ⋅ 33分钟前 ⋅ 0

OSChina 周一乱弹 —— 理发师小姐姐的魔法

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @冰冰棒- :分享田馥甄的单曲《My Love》 《My Love》- 田馥甄 手机党少年们想听歌,请使劲儿戳(这里) @Li-Wang :哎,头发又长了。。。又要...

小小编辑 ⋅ 58分钟前 ⋅ 4

Kafka1.0.X_消费者API详解2

偏移量由消费者管理 kafka Consumer Api还提供了自己存储offset的功能,将offset和data做到原子性,可以让消费具有Exactly Once 的语义,比kafka默认的At-least Once更强大 消费者从指定分区...

特拉仔 ⋅ 今天 ⋅ 0

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 今天 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 今天 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部