面向对象相关
1 init和new区别?
造出一个空对象,__new__干的
把属性放入对象中,__init__干的事
2__ setattr__ __getattr__
3 __setitem__和__getitem__
4 __slots__
class A:
__slots__ = ['name', 'age']
a1 = A()
# print(a1.__dict__) # AttributeError: 'A' object has no attribute '__dict__'
a1.name = '张三'
a1.age = 24
print(a1.age)
# a1.hobby = '泡妞' # AttributeError: 'A' object has no attribute 'hobby'
a1.size=179
print(a1.__slots__)
5 __call__
# __call__
class Foo():
def __call__(self, *args, **kwargs):
print('我被执行了')
# Foo() 会触发元类的 __call__方法
f = Foo()
f()
6 __doc__
class A:
"""我是A类的描述信息啊手动阀手动阀"""
pass
print(A.__doc__)
7 __eq__
## 对象 == 比较时触发执行
class A:
def __init__(self,x,y):
self.x = x
self.y = y
def __eq__(self,obj):
# 打印出比较的第二个对象的x值
print(obj.x)
if self.x +self.y == obj.x+obj.y:
return True
else:
return False
a = A(1,2)
b = A(2,2)
print(a == b)
8 type 和object 的关系
# type 类,继承object,是所有类的类,包括自己
# object类:谁都没继承,它是由type实例化得到的,是所有类的父类,包括type
数据库相关
1 mysql版本选择
5.5 :企业基本不用了
5.6 :****:四星 5.6.36 5.6.38 5.6.40 ...5.6.46
5.7 :*****:五星 5.7.20 5.7.22 ....5.7.28 5.7.30(5.7版本最新)
8.0(最新) :**:两星 8.0.11 开始,之前都是测试版 ...8.0.20
2 MySQL分支版本
# 去ioe:ibm,oracle,emc
# PostgreSQL,oracle,mysql
# 分支
Oracle:
MySQL官方版
红帽 :
MariaDB:红帽维护的分支
Percona:
PerconaDB:Percona公司维护的分支
# 版本
企业版:收费
社区版:开源免费
# linux内核,GPL开源协议,红帽 centos
3 mysql 架构
客户端启动:mysql -uroot -p123456 -P 3306 -h 127.0.0.1
-cmd窗口下执行
-tcp协议
-navicat
-pymysql(用python写的符合他们通信协议的客户端)
服务端启动:mysqld 加载了配置文件(找了一些路径)
4 一条SQL语句的执行过程
连接层
sql层
DDL :数据定义语言
DCL :数据控制语言
DML :数据操作语言
DQL: 数据查询语言
存储引擎层
5 varchar类型
varchar最多能存储65535个字节的数据 varchar(255)