访问数据库(廖py)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34551188/article/details/79962701

访问数据库(廖py)

标签(空格分隔): MYSQL SQLite


当我们需要保存自己定义的存储格式的时候,比如成绩单

姓名 成绩
aaa 95
bbb 21

可以使用文本进行保存,或者使用JSON格式保存文件。但是这种方法并不便捷,查找和添加时都不能满足要求。
因此使用数据库(database)专门集中存储和查询的软件,可以通过条件快速查询到指定的数据。

image_1cb64a6ssb8u1k4t1p2co3q3pr9.png-36.4kB

根据某个年级的ID就可以查找到所有班级的行,这种查询语句在关系数据库中成为SQL语句,可以写成

SELECT * FROM classes WHERE grade_id = ‘1’

结果也是一个表:
image_1cb64e50k1o5q1isd126m1jj217u0m.png-3.6kB

SQLite

sqlite3已经内置在Python中,可以直接import调用。
表是数据库中存放关系数据的集合,一个数据库中通常包含多个表,比如学生表、班级表、学校表。各表之间通过外键关联。
1.要操作数据库,首先要连接到数据库,一个数据库链接称为Connection;
2.连接到数据库后,需要打开游标Cursor,通过Cursor执行SQL语句,然后获得执行结果。
3.Python定义了一套操作数据库的API接口,任何数据库要连接到Python,只需要提供复合Python标准的数据库驱动即可。

create & insert

# 导入SQLite驱动:
>>> import sqlite3
# 连接到SQLite数据库
# 数据库文件是test.db
# 如果文件不存在,会自动在当前目录创建:
>>> conn = sqlite3.connect('test.db')
# 创建一个Cursor:
>>> cursor = conn.cursor()
# 执行一条SQL语句,创建user表:
>>> cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
<sqlite3.Cursor object at 0x10f8aa260>
# 继续执行一条SQL语句,插入一条记录:
>>> cursor.execute('insert into user (id, name) values (\'1\', \'Michael\')')
<sqlite3.Cursor object at 0x10f8aa260>
# 通过rowcount获得插入的行数:
>>> cursor.rowcount
1
# 关闭Cursor:
>>> cursor.close()
# 提交事务:
>>> conn.commit()
# 关闭Connection:
>>> conn.close()

select

>>> conn = sqlite3.connect('test.db')
>>> cursor = conn.cursor()
# 执行查询语句:
>>> cursor.execute('select * from user where id=?', ('1',))
<sqlite3.Cursor object at 0x10f8aa340>
# 获得查询结果集:
>>> values = cursor.fetchall()
>>> values
[('1', 'Michael')]
>>> cursor.close()
>>> conn.close()
num work
1. 建立connection
2. 设置cursor
3. 通过cursor.execute执行SQL语句
4. 完成操作后关闭connetion,cursor

使用cursor对象执行insert,update,delete语句时,执行结果由rowcount返回影响的行数。
执行select语句时,通过fetchall()可以拿到结果集,是一个list,每个元素都是一个tuple对应一行记录。

execute()方法

语句中有几个占位符? 就要对应几个参数。

cursor.execute(‘select * from user where name=? and pwd=?, (‘abc’, ‘passward’))

其中有两个占位符,所以有两个参量。当只有一个参量时,参量输入也要为tuple。

cursor.execute(‘select * from user where id=?’, (‘1’,))

练习

sqlite中使用select * from user where ...进行判断选择。
可以使用between选择区间。
排序使用select * from user order by ...,降序时使用desc关键字。

当需要对排序进行选择时,使用嵌套:

cursor.execute(‘select * from (select * from user order by score) where score between ? and ?’, (low ,high))
其中?作为占位符。

MySQL

import mysql.connector
conn = mysql.connector.connect(user='root', passward='pwd', database='test')
curcor = conn.cursor()

其中占位符为%s
其余操作Mysql与SQLite类似。
http://www.runoob.com/sqlite/sqlite-tutorial.html
有SQLite教程。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页