虽然CSV文件读写方便,但我们更希望把数据写道数据库中,方便查询和保存 数据库系统包括数据库、数据库管理系统、数据库的用户和支撑数据库管理系统运行的软硬件
数据模型是现实生活中数据的抽象,用来描述数据的概念和定义,是数据库中数据的存储方式,是数据库系统的基础。 常用的数据模型有以下三种:
- 层次模型:以树形结构表示数据之间的关系
- 网状模型:以网,图型结构表示数据之间的关系
- 关系模型:以二维表结构表示数据之间的关系
根据数据库的数据模型划分,数据库可以分为以下类型:
- 网状型数据库(Network Database)
- 关系型数据库(Relational Darabase)
- 树状数据库(Hierarchical Database)
- 面向对象数据库(Object-oriented Database)
一、存到数据库
关系型数据库常用的5个对象
- 表(Table):由行和列组成 列由同类信息组成,每列为一个字段,标题为字段名
- 图标(Diagram):数据库表之间的关系示意图
- 视图(View):一张虚拟的表,并不实际存储 可以限定用户可查看,修改的数据
- 触发器(Trigger):由用户定义的SQL事务命令的集合
- 索引(Index):根据给定的数据库表建立起来的顺序,可以快速访问数据
1、存到数据库后的亚子
2、SQL的作用
SQL是一种结构化程序查询语言,是关系型数据库的标准语言,可以用来:
- 数据查询
- 数据存取
- 数据更新
- 管理数据库
3、SQL的常用命令
SQL的常用命令主要分为:
- 数据定义:CREATE,DROP,ALTER
- 数据操作:SELECT,DELETE,UPDATE,INSERT
SQL语句以关键字SELECT,INSERT,UPDATE等开始,所有语句以分号为结束 eg:
代码语言:javascript复制SELECT column1 FROM table1 WHERE condition;
查询结果如下:
下图为SQL语句的书写顺序和执行顺序:
Python连接SQL的常用包:
- MySQLdb
- pymysql
以pymysql为例:
import pymysql
import pymysql.cursors
二、字段类型
MySql常见类型数据:
三、常用操作
结合pymysql,使用python所给的数据库API,我们将介绍如下常用的操作命令:
- 插入数据
- 查询数据
- 更新数据
- 删除数据
1、创建连接
使用pymysql创建数据库连接:
代码语言:javascript复制# 连接数据库
connect = pymysql.Connect(host='localhost',port=3306,user='root',passwd='199712','minfo1','mvinfo',charset = "utf-8")
获取数据库的游标,使用游标对数据库进行操作
代码语言:javascript复制# 获取游标
cursor = connect.cursor()
通过cursor可以直接进行数据库操作: 创建数据库:
代码语言:javascript复制cursor.execute('CREATE DATABASE test;')
cursor.execute("show databases;")
查看数据库名称:
代码语言:javascript复制for db in cursor.fetchall():
print(db)
完整代码:
代码语言:javascript复制import traceback
import pymysql as pymysql
def mysql(sql):
db = pymysql.connect(host='localhost',port=3306,user='root',passwd='199712',charset = 'utf8')
# 使用cursor()方法获取操作游标
cursor = db.cursor()
try:
print(sql)
# 执行sqk语句
result = cursor.execute(sql)
#
db.commit()
results = cursor.fetchall()
except:
traceback.print_exc()
# 发生错误时回滚
db.rollback()
# 关闭数据库连接
db.close()
return results
results = mysql('create database Lihuaxin')
for result in results:
print(result)
2、插入数据
通过cursor实现向数据库插入数据:
代码语言:javascript复制import traceback
import pymysql as pymysql
def mysql(sqls):
db = pymysql.connect(host='localhost',port=3306,user='root',passwd='199712',charset = 'utf8')
# 使用cursor()方法获取操作游标
cursor = db.cursor()
results=[]
try:
print("get sqlqueries = ",len(sqls))
# 执行sqk语句
for sql in sqls:
result = cursor.execute(sql)
print(sql,":",result)
db.commit()
results = cursor.fetchall()
except:
traceback.print_exc()
# 发生错误时回滚
db.rollback()
# 关闭数据库连接
db.close()
return results
results = mysql(['use hackdata','show tables'])
for result in results:
print(result)
刚开始我们看到的是没有show tables的:
然后通过添加下图红线处部分
如果多次执行一个数据库可以这样写:
插入数据:
代码语言:javascript复制results = mysql(['insert into user values (1, "Tom");','insert into user values (2, "Li");','select * from user ;'])