文档章节

web6课堂回顾

泠泠七弦客
 泠泠七弦客
发布于 2016/06/16 11:39
字数 1149
阅读 47
收藏 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
博文 17
码字总数 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
0
lan Goodfellow IEEESSP最新演讲:对抗性实例安全性研究及其未来

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

大数据文摘
05/25
0
0
PMCAFF微课堂 | 前YY产品总监深度揭秘P2P运营推广精髓

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

pmcaff2008
2017/12/13
0
0
《deeplearning.ai》 课程一第四周 | Deep neural networks

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

V怪兽
01/08
0
0
史上最简单的Hibernate4视频教程(附源码和笔记)

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

2846613430
2016/04/08
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

OSX | SafariBookmarksSyncAgent意外退出解决方法

1. 启动系统, 按住⌘-R不松手2. 在实用工具(Utilities)下打开终端,输入csrutil disable, 然后回车; 你就看到提示系统完整性保护(SIP: System Integrity Protection)已禁用3. 输入reboot回车...

云迹
今天
3
0
面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
今天
4
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
今天
4
0
Permissions 0777 for ‘***’ are too open

异常显示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ......

李玉长
今天
5
0
区块链10年了,还未落地,它失败了吗?

导读 几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 几乎每个人,甚...

问题终结者
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部