【注意:
stu = [1, 12, 3]
st = [0, 2, 3]
print(stu + st)
输出结果为:[1, 12, 3, 0, 2, 3]
列表,元组都可以这么干
】
【我的mysql乱码,实现执行chcp 65001】
- 面向对象三大特性之多态
多态指的是:多种状态,即完成某个行为时,使用不同的对象会得到不同的状态
同样的行为(函数),传入不同的对象,得到不同的状态
例如:
class Animal:
def speak(self):
pass
class Dog(Animal):
def speak(self):
print(‘汪汪汪’)
class Cat(Animal):
def speak(self):
print(“喵喵喵”)
def make_noise(animal:Animal):
animal.speak()
dog=Dog()
cat=Cat()
make_noise(dog) #输出:汪汪汪
make_noise(cat) #输出:喵喵喵
多态常作用在继承关系上
比如
·函数(方法)形参声明接收父类对象
·实际传入父类的子类对象进行工作
即:
·以父类做定义声明
·以子类做实际工作
·用以获得同一行为,不同状态
比如上述Animal的speak方法,是空实现
这种设计的含义是:
·父类用来确定有哪些方法
·具体的方法实现,由子类自行决定
这种写法,就叫做抽象类(也可以称之为接口)
抽象类:含有抽象方法的类称之为抽象类
抽象方法:方法体是空实现的(pass)称之为抽象方法
抽象类就好比定义一个标准
包含了一些抽象的方法,要求子类必须实现
配合多态,完成
·抽象的父类设计(设计标准)
·具体的子类实现(实现标准)
- SQL语言
这里数据库采用mysql
数据库按照:库->表->数据 三个层级进行组织
show databases #查看有哪些数据库
use 数据库名 #使用某个数据库
show tables #查看数据库内有那些表
exit #退出MySqL的命令行环境
SQL是结构化查询语言,用于访问和处理数据库的标准的计算机语言
操作数据库的SQL语言,也基于功能,可以划分为4类:
·数据定义:DDL(data definition language)
·库的创建删除、表的创建删除等
·数据操纵:DML(Data manipulation language)
·新增数据,删除数据,修改数据等
·数据控制:DCL(data control language)
·新增用户、删除用户、密码修改、权限管理等
·数据查询:DQL(data query language)
·基于需求查询和计算数据
SQL不区分大小写,以;号结尾
DDL-库管理
#查看数据库
show databases;
#使用数据库
use 数据库名称;
#创建数据库
create database 数据库名称 [charset UTF8];
#删除数据库
drop database 数据库名称;
#查看当前使用的数据库
select database()
####DDL-表管理
#查看有那些表
show tables;
#删除表
drop table 表名称;
drop table if exists 表名称;
create table 表名称(
列名称 列类型,
列名称 列类型,
......
);
#列类型有
int #整数
float #浮点数
varchar #文本,长度为数字,最大长度限制
date #日期类型
timestamp #时间戳类型
DML-数据操作语言
·插入insert
基础语法:
Insert into 表[(列1,列2,……,列N)] values(值1,值2,…,值N), (值1,值2,…,值N), (值1,值2,…,值N),…, (值1,值2,…,值N);
·删除delete
基础语法:
delete from 表名称 [where 条件判断]
·更新update
基础语法:
update 数据表 set 列名称=...,列名称=...,列名称=... where 条件
DQL-数据查询
基础语法:
select 字段列表|* from 表
select id,name,age from 表名称
select * from student where age>20;
分组聚合
基础语法:
select 字段|聚合函数 from 表 [where 条件] group by 列;
例如:
select gender,avg(age) from student group by gender;
聚合函数有:
sum(列) 求和
avg(列) 求平均值
min(列) 求最小值
max(列) 求最大值
count(列|*) 求数量
结果排序
基础语法:
select 列|聚合函数|* from 表 where … group by … order by …[asc|desc]
结果分页限制
通过limit 关键字,对查询结果进行数量限制或分页显示,语法:
select 列|聚合函数|* from 表 where … group by … order by … [asc|desc] limit n,[m]
执行顺序:
from->where->group by 和聚合函数->select->order by->limit
【我的mysql乱码,实现执行chcp 65001】
三、通过python操作mysql例如:
from pymysql import Connection
# 构建MYSQL数据库的链接
conn = Connection(
host="localhost", # 主机名,本机的话可以省略
port=3306, # 端口号,可以省略
user="root", # 账户
password="" # 没有设置可以省略
)
# 查看MYSQL版本
# print(conn.get_server_info())
# 获取游标对象
cursor = conn.cursor()
conn.select_db("jd") # 先选择数据库,等价于use 数据库
# 使用游标对象,执行sql语句
cursor.execute("select * from student;")
results: tuple = cursor.fetchall()
for k in results:
print(k)
# 关闭链接
conn.close()
总结:
- 使用第三方库:pymysql来操作MYSQL
- 安装:pip install pumysql
- 获取链接对象
- 导包:from pymysql import Connection
- Connection(主机,端口,账号,密码)即可得到链接对象
- 通过连接对象.select_db(“数据库名称”)选择要连接的数据库
- 执行SQL查询:通过连接对象调用cursor()方法,得到游标对象
- 游标对象.execute()执行SQL语句
- 游标对象.fetchall()得到全部的查询结果封装入元组内
- 链接对象.close()关闭和MYSQL数据库的连接
from pymysql import Connection
try:
pool = Connection(
host="127.0.0.1",
port=3306,
user="root",
password=""
)
except Exception as e:
print("出错了", e)
pool.select_db("jd")
cursor=pool.cursor()
cursor.execute("select * from student")
result=cursor.fetchall()
print(result)
pool.close()
数据插入:
如果直接编写代码:
cursor.execute("insert into student values(6,'塔兹米',90)")
是无法将数据插入到数据表student中的
pymysql在执行数据插入或其他产生数据更改的SQL语句时,默认是需要提交更改的,即,需要通过代码”确认”这种更改行为
通过连接对象.commit()即可确认此行为
只有确认的修改,才能生效
from pymysql import Connection
try:
pool = Connection(
host="127.0.0.1",
port=3306,
user="root",
password=""
)
except Exception as e:
print("出错了", e)
pool.select_db("jd")
cursor=pool.cursor()
cursor.execute("insert into student values(6,'塔兹米',90)")
cursor.execute("select * from student")
pool.commit()
pool.close()
自动commit
如果不想手动commit确认,可以在构建链接对象的时候,设置自动commit的属性
#构建到MYSQL数据库的连接
conn=Connection(
host=”localhost”,
port=3306,
user=”root”,
password=”123456”,
autocommit=True
)