1、SQL(结构化查询语言),是基于关系代数运算的一种数据查询语言,用于存取数据,查询、更新和管理关系型数据库系统。
SQL(Structure Query Language) 语言的内部再分类如下:
DDL:Data Difinition Language 数据定义语言,一般用来库和表头的创建和删除;
DML:Data Manipulation Language 数据操作语言,一般用来做表中数据的增加和删除;
DQL:Data Query Language 数据查询语言,用来在数据库中查询的语言;
DCL:Data Control Language 数据控制语言,一般是DBA才会用到的数据库用户管理及日常维护语言。
2、SQL数据库和NoSQL数据库
SQL数据库,如:MySQL、Oracle、SQL Server、Sybase和DB2等。
非关系型数据库(NoSQL ),如:Redis,Tokyo Cabinet,Cassandra,Voldemort,MongoDB,Dynomite,HBase,CouchDB,Hypertable, Riak,Tin, Flare, Lightcloud, KiokuDB,Scalaris, Kai, ThruDBd等。
3、Python数据库API
DB-API 是一个规范,它定义了一系列必须的对象和数据库存取方式,以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口。
遵循协议的数据库模块通常有函数connect()。该函数用于连接数据库,返回数据库连接对象。
1、API数据库模块定义3个全局变量;
apilevel、版本号
threadsafety、0~3的整数:0不能共享模块,1可以共享模块本身,不能共享连接,2可以共享模块和连接,不能共享游标,3模块是绝对线程安全的
paramstyle:
format:表示在 SQL 语句中使用 Python 标准的格式化字符串代表参数。例如,在程序中需要参数的地方使用 %s,接下来程序即可为这些参数指定参数值。
pyformat:表示在 SQL 语句中使用扩展的格式代码代表参数。比如使用 %(name),这样即可使用包含 key 为 name 的字典为该参数指定参数值。
qmark:表示在 SQL 语句中使用问号(?)代表参数。在 SQL 语句中有几个参数,全部用问号代替。
numeric:表示在 SQL 语句中使用数字占位符(:N)代表参数。如:1 代表一个参数,:2 也表示一个参数,这些数字相当于参数名,因此不一定需要连续。
named:表示在 SQL 语句中使用命名占位符(:name)代表参数。例如 :name 代表一个参数,:age 也表示一个参数、
2、连接对象的方法和属性
方法或属性 | 功能描述 |
---|---|
cursor() | 打开游标。 |
commit() | 提交事务。 |
rollback() | 回滚事务。 |
close() | 关闭数据库连接。 |
isolation_level | 返回或设置数据库连接中事务的隔离级别。 |
in_transaction | 判断当前是否处于事务中。 |
笔记:cursor犯法可以返回一个游标对象,游标对象是 Python DB API 的核心对象,该对象主要用于执行各种 SQL 语句,包括 DDL、DML、select 查询语句等。使用游标执行不同的 SQL 语句返回不同的数据。
3、游标对象的属性和方法
属性或方法 | 功能描述 |
---|---|
execute(sql[, parameters]) | 执行 SQL 语句。parameters 参数用于为 SQL 语句中的参数指定值。 |
executemany(sql, seq_of_parameters) | 重复执行 SQL 语句。可以通过 seq_of_parameters 序列为 SQL 语句中的参数指定值,该序列有多少个元素,SQL 语句被执行多少次。 |
executescript(sql_script) | 这不是 DB API 2.0 的标准方法。该方法可以直接执行包含多条 SQL 语句的 SQL 脚本。 |
fetchone() | 获取查询结果集的下一行。如果没有下一行,则返回 None。 |
fetchmany(size=cursor.arraysize) | 返回查询结果集的下 N 行组成的列表。如果没有更多的数据行,则返回空列表。 |
fetchall() | 返回查询结果集的全部行组成的列表。 |
close() | 关闭游标。 |
rowcount | 该只读属性返回受 SQL 语句影响的行数。对于 executemany() 方法,该方法所修改的记录条数也可通过该属性获取。 |
lastrowid | 该只读属性可获取最后修改行的 rowid。 |
arraysize | 用于设置或获取 fetchmany() 默认获取的记录条数,该属性默认为 1。有些数据库模块没有该属性。 |
description | 该只读属性可获取最后一次查询返回的所有列的信息。 |
connection | 该只读属性返回创建游标的数据库连接对象。有些数据库模块没有该属性。 |
4、操作数据库的基本流程
- 调用 connect() 方法打开数据库连接,该方法返回数据库连接对象。
- 通过数据库连接对象打开游标。
- 使用游标执行 SQL 语句(包括 DDL、DML、select 查询语句等)。如果执行的是查询语句,则处理查询数据。
- 关闭游标。
- 关闭数据库连接。
笔记:
1、不同数据库的连接模块可能有着不同的规则,开发的时候需要使用模块的这些规则去构造数据。
2、DB API有一些构造函数和特殊值,为了使连接模块能够在幕后执行必要的转换,需要每个数据库模块都实现DB API中的构造函数和特殊,可能有些数据库模块没有完全遵守这点。