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

#python学习笔记(二十一)#python与SQL基本操作

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

#python学习笔记(二十一)#python与SQL基本操作

目录

1 背景知识

2 SQL基本语法

2.1 基本元素

2.2 运算符

2.3 comments

2.4 基本操作

3 用python创建database table

4 用python对数据库进行更改


1 背景知识

▲数据库Database概念:Table(Relation),row(tuple),column(attribute)

▲有许多不同的数据库系统,用于各种各样的目的,包括:Oracle, MySQL, Microsoft SQL Server, PostgreSQL,和SQLite。其中SQLite,它是一个非常常见的数据库,并且已经内置到Python中。 

 ▲SQLite browser下载:

http://sqlitebrowser.org/http://sqlitebrowser.org/http://sqlitebrowser.org/

 使用浏览器,可以轻松地创建表create table、插入数据insert data、编辑数据edit data或对数据库中的数据运行简单的SQL查询query。

▲SOLlite browser和python的优劣:

在某种意义上,数据库浏览器在处理文本文件时类似于文本编辑器。当您想要对文本文件执行一个或很少的操作时,您可以在文本编辑器中打开它并进行您想要的更改。当您需要对文本文件进行许多更改时,通常会编写一个简单的Python程序。在处理数据库时,您将发现相同的模式。您将在数据库管理器中执行简单的操作,而更复杂的操作将在Python中最方便地完成。

2 SQL基本语法

2.1 基本元素

▲keywords关键字是在SQL语言中定义的字:SQL关键词列表

▲identifiers标识符是数据库对象上的名称,如表、列和模式

▲Clauses子句,它们是语句和查询的组成部分

▲expresion表达式

▲predicates条件判断

▲queries根据特定的标准检索数据。这是SQL的一个重要元素

▲statement语句

▲insignificant whitespace在SQL语句和查询中,不重要的空格通常会被忽略,这使得对SQL代码进行可读性格式化更加容易。

2.2 运算符
运算符描述示例
=等于Author = 'Alcott'
<>不等于 (many DBMSs accept != in addition to <>)Dept <> 'Sales'
>大于Hire_Date > '2012-01-31'
<小于Bonus < 50000.00
>=大于等于Dependents >= 2
<=小于等于Rate <= 0.05
[NOT] BETWEEN [SYMMETRIC]在一个包含范围之间。如果第一个值高于第二个值,则SYMMETRIC反转范围。Cost BETWEEN 100.00 AND 500.00
[NOT] LIKE [ESCAPE]以字符开始Full_Name LIKE 'Will%'
包含字符Full_Name LIKE '%Will%'
[NOT] IN等于多个数值中的一个DeptCode IN (101, 103, 209)
IS [NOT] NULL等于null(缺失值)Address IS NOT NULL
IS [NOT] TRUE or IS [NOT] FALSETure或者falsePaidVacation IS TRUE
IS NOT DISTINCT FROM等于value或两者都为空(丢失的数据)Debt IS NOT DISTINCT FROM - Receivables
AS用于在查看结果时更改列名SELECt employee AS department1
case expression条件语句
CASE WHEN n > 0
          THEN 'positive'
     WHEN n < 0
          THEN 'negative'
     ELSE 'zero'
END
CASE n WHEN 1
            THEN 'One'
       WHEN 2
            THEN 'Two'
       ELSE 'I cannot count that high'
END
COALESCE(x1,x2)

x1不为缺失值时返回x1,否则返回x2

相当于

CASE WHEN x1 IS NOT NULL THEN x1
     ELSE x2
END
NULLIF(x1, x2)

x1=x2时,返回null,否则返回x1

相当于

CASE WHEN x1 = x2 THEN NULL ELSE x1 END

2.3 comments

▲内部插入批注

2.4 基本操作

▲SQL不区分大小写,但为了阅读方便,常将keywords大写

▲创建表CREATE TABLE

CREATE TABLE Tracks (title TEXT, plays INTEGER)

▲插入数据INSERT INTO

INSERT INTO Tracks (title, plays) VALUES ('My Way', 15)

▲条件选择SELECT  WHERe

SELECT * FROM Tracks WHERe title = 'My Way'

▲顺序选择SELECt ORDER BY

SELECT title,plays FROM Tracks ORDER BY title

▲删除行DELETe

DELETE FROM Tracks WHERe title = 'My Way'

▲更新行 UPDATe

UPDATE Tracks SET plays = 16 WHERe title = 'My Way'

3 用python创建database table
import sqlite3 ###加载sqlite3库

conn = sqlite3.connect('music.sqlite')###建立与数据库的连接,如果该数据库不存在则会创建一个数据库
cur = conn.cursor()###相当于处理file时的open()

###有cursor之后可以用excute执行SQL命令
cur.execute('DROP TABLE IF EXISTS Tracks')###如果Tracks表存在则删除该表
cur.execute('CREATE TABLE Tracks (title TEXT, plays INTEGER)')###创建表
conn.close()###关闭

▲通过cursor对数据库进行操作

 

4 用python对数据库进行更改
import sqlite3###加载库

conn = sqlite3.connect('music.sqlite')
cur = conn.cursor()###建立连接和cursor

cur.execute('INSERT INTO Tracks (title, plays) VALUES (?, ?)',
('Thunderstruck', 20))
cur.execute('INSERT INTO Tracks (title, plays) VALUES (?, ?)',
('My Way', 15))###插入数据,(?,?)对应后面的内容('My Way', 15)
conn.commit()###执行更改


print('Tracks:')
cur.execute('SELECT title, plays FROM Tracks')###从数据库获取表
for row in cur:
    print(row)###逐行输出表

cur.execute('DELETe FROM Tracks WHERe plays < 100')###删除行
conn.commit()###执行更改
cur.close()###关闭

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

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

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