2019.10.08python笔记——数据库相关

这篇博客介绍了Python操作SQLite数据库的基本知识,包括SQLite数据库的特点、在Python中的使用,以及如何通过图形化工具进行数据库管理。内容涵盖了关系型数据库的分类、SQL语言的基础、Python连接SQLite的示例等。
摘要由CSDN通过智能技术生成

常用数据库介绍

关系型数据库

轻量级

  • Microsoft office access 数据库:非常轻量。很少有人使用。
  • sqlite:轻量级。【纯文本文件的数据库,无需安装,python内置驱动操作】。场景:手机应用。、

中量级,重量级

  • mysql:开源免费,非常流行,13年左右随着PHP流行和免费的特点在互联网领域,国内流行,直到现在。已经被甲骨文公司收购。
  • oracle:甲骨文公司产品,主打企业应用,跟java配合,企业应用。企业中流行,正版授权昂贵。
  • db2:IBM公司产品,企业级,银行行业应用。
  • postgresql:大象数据库。开源免费,竞争对手mysql。python一些开源项目的官方建议数据库,国外已经久负盛名,国内不流行。
  • microsoft SQLServer

nosql

not only sql ,不仅仅是关系型数据库,非关系型数据库是一种补充。 特点,数据往往存在内存中,优点:读表效率高,场景:缓存登录表信息。

  • mongodb
  • redis

SQL

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

基本数据类型

  • 整型 INT INTEGER LONGINT
  • 字符串:STRING CHAR VARCHAE(variable char 变长字符串)。 如果存中文不知道可以存10个还是6个,varchar(20)会自动计算编码方式,不同语言中保持一致。

常用语句

  1. 创建表
    create table student(
    id int primary key auto increase,
    name varchar(20),
    age int;
 INSERT INTO (name,age)VALUES(‘小明’,13);
UPDATE FROM student set name='小红' WHERE name='小明'
DELETE FROM student WHERE name='小明'//删除数据但不删除索引。 truncate DROP(完全删除掉表结构)
SELECT(id,name) FROM student; 
SELECT * FROM student;

外键

外键: foreign key。
如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键
如果把所有信息都放到一个表中,发现信息难以维护。
对业务逻辑按照属性划分维度,不同表。划分后易于维护。

id name age classes_id
1 小明 13 1
2 小红 13 1
3 小青 13 2

id name location
1 321 三楼
2 211 二楼

学生表里的班级字段类似变量指向,把两张表关联。

图形化工具

数据库可以命令行登录查询,但不直观,需要图形化工具,像excel一样方便查看数据。

  • navicat:比较流行。 有独立版本 高级版通用数据库版。
  • workbench: mysql官方工具,体验好,偶尔崩溃。
  • datagrip:所有数据库都可以连接。jetbrains家的工具用的java写的。下载的datagraip安装后没有驱动,需要下载java连接sqltie数据库的"驱动",“jdbc(java database connector)for sqlite”。
    数据库驱动:driver 。 python代码 →(驱动)python代码到sql的转换 →sql语句 → 数据库底层操作接口

python操作sqlite数据库基本示例

  1. 导入驱动
    import sqlite3 # 目前的sqlite数据库版本是3,这里导入的是驱动。

  2. 在硬盘上创建数据库存储文件。sqlite数据库比较轻量,连接时自动创建。 注意不能new sqlite.db空文件

  3. 连接数据库。传入参数相对路径和绝对路径 存储数据库文件名,如果文件名不存在会自动创建。返回连接会话对象。

connect = sqlite3.connect('testsqlite.db')
print(connect)
  1. 从会话连接获取游标cursor,游标好像表格里的鼠标光标
cursor = connect.cursor()
  1. 执行sql语句。创建成功后代码看不到什么。如果纯文本编辑器打开可以看到一些信息。注意重复创建表会报错,第二次执行可以注释掉或者try except
 cursor.execute('''
     create table student(
        id INT PRIMARY KEY ,
         name VARCHAR (10),
         age INT
     );
 ''')
  1. 插入测试数据 sqlite比较轻量,上面创建表时没有说主键自增,插入假数据手动构造主键,注意不要主键重复。重量级数据库插入成功后有返回值——插入的行数,sqlite没有。
cursor.execute('''insert into student(id,name,age) values (1,'小明',13)''')
  1. 提交 更新、删除需要提交 查询不用
connect.commit()
#关闭连接,释放资源
cursor.close()
connect.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值