2018年5月13日笔记

  • SQL语句复习
创建一个库
create database DB_name;
授权一个用户
grant all privileges on *.* to ‘user1‘@‘%‘ identified by ‘qwe123‘;
创建表
create table table_name(column_name type not null);
查询
select * from tabel_name where condition1 and condition2;
增加
insert into table_name (id, name, age, sex, grander) values (1, ‘ling‘, 25, ‘M‘, 99), (2, ‘ajing‘, 45, ‘F‘, 88);
改
update table_name set column_name=xx where condition
删除
delete from table_name  where condition
drop table table_name
联合查询
select a.id, b.name from A a join B b on a.id=b.tid
创建索引
create index idx_库名_表名_列名1_列名2 (列名1, 列名2)
查看sql是否走索引
explain select * from table_name where column_name==‘xxx‘
  • 连接数据库复习
 1 # python2使用mysqldb
 2 # python3使用pymysql
 3
 4 import pymysql
 5
 6 # 1.创建连接connection和游标cursor
 7 conn = pymysql.connect(host="192.168.2.1", port=3306, user="root", passwd="qwe123", db="test")
 8 cus = conn.cursor()
 9
10 # 2.执行SQL
11 sql = "select * from Student;"
12 cus.execute(sql)
13 cus.fetchone()
14 cus.fetchmany(size=n)
15 cus.fetchall()
16
17 # 3.关闭游标cursor和连接connection
18 cus.close()
19 conn.close()
  • SQLAlchemy复习
 1 # 导入
 2 from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
 3 from sqlalchemy.orm import sessionmaker
 4 from sqlalchemy.ext.declarative import declarative_base
 5
 6 # 1.创建引擎engine,‘数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名‘
 7 engine = create_engine("mysql+pymysql://username:[email protected]:port/db_name")
 8
 9 # 2.创建会话session
10 DBsession = sessionmaker(bind=engine)
11 session = DBsession()
12
13 # 3.创建表
14 metadata = MetaData(engine)
15 student = Table("Student", metadata,
16                 Column("id", Integer, primary_key=True),
17                 Column("name", String(50))
18                 )
19 metadata.reate_all()       # 若不存在同名Table,则创建
20
21 # 4.增加
22 # 4.1 创建一个模型类
23 Base =declarative_base()        # 创建对象的基类
24 class Student(Base):            # 定义一个Student类来表示一张student表,多个表就定义多个class
25     __tablename__ = "student"
26     id = Column(Integer, primary_key=True)
27     name = Column(String(50))
28 # 4.2 导入模型类,实例化该类
29 student1 = Student(id=1001, name="Karl")            # !!! 别忘了"形参=XXX"  !!!
30 student2 = Student(id=1002, name="Tom")
31 student3 = Student(id=1003, name="Jack")
32 # 4.3 通过add实例来添加记录
33 session.add(student1)
34 session.add_all([student2, student3])
35
36 # 5.查询
37
38 # 5.1 filter 与 filer_by 的区别
39
40 # filter可以使用> <等,表示列必须用 表.列 的形式,等于用 ==.
41 session.query(Student).filter(Student.id>1000)
42 # filter不支持组合查询
43 session.query(Student).filter(Student.id>1000).filter(name=="Tom")
44
45 # filter_by可直接写列,不支持> <,等于用 ==
46 # filter_by可支持组合查询
47 session.query(Student).filter(id==1000 and name=="Jack")
48
49 # 5.2 模糊查询
50 # SQL语句的模糊查询
51 #select * from student where name like ‘%ling%‘;
52 # python语句的模糊查询
53 session.query(Student).filter(Student.name.like("%ling%"))
54
55 # 5.3 获取数据
56 one()   tuple
57 all()   list
58 # 在查询中,不写one()或all(),获取的结果就是SQL语句
59
60 # 6.更新
61 # 6.1 先查出来
62 std1 = session.query(Student).filter(Student.id>1000)
63 # 6.2 更新类的属性值
64 std1.name = "testname"
65 # 6.3 commit提交下
66 session.commit()
67
68 # 7.删除
69 # 先查出来,然后调用delete()方法,左后commit()
70 session.delete(std1)
71
72 # 8.统计、分组、排序
73 # 8.1 统计
74 session.query().filter().count()
75 session.query().filter().groupby()
76 session.query().filter().orderby(student.id.desc)
  • 将对数据库的操作进行封装
 1 from sqlalchemy import create_engine, Integer, String, Column
 2 from sqlalchemy.orm import sessionmaker
 3 from sqlalchemy.ext.declarative import declarative_base
 4
 5
 6
 7 Base = declarative_base()
 8 class Student(Base):
 9     __tablename__ = ‘student‘
10     id = Column(Integer, primary_key=True)
11     name = Column(String(50))
12     age = Column(Integer)
13     address = Column(String(100))
14
15 # 增
16 def insert(session):
17     student1 = Student(id=1004, name=‘ling‘, age=28, address=‘shanxi‘)
18     session.add(student1)
19     session.commit()
20
21 # 删
22 def delete(session):
23     session.query(Student).filter(Student.id == 1001).delete()
24     session.commit()
25
26 # 改
27 def update(session):
28     student1 = session.query(Student).filter(Student.id == 1001).one()
29     student1.name = ‘test123‘
30     session.commit()
31     student2 = session.query(Student).filter(Student.id == 1001).one()
32     print(student2.name)
33
34 # 统计
35 def count(session):
36     numnber = session.query(Student).filter().count()
37     print("total student is {0}".format(numnber))
38
39 # 分组
40 def groupBy(session):
41     groupByAge = session.query(Student).group_by(Student.age).all()
42     print(groupByAge)
43     for i in groupByAge:
44         print(i.id, i.name, i.age, i.address)
45
46 # 排序
47 def orderBy(session):
48     orderByAge = session.query(Student).order_by(Student.age.desc()).all()
49     for x in orderByAge:
50         print(x.id, x.name, x.age, x.address)
51
52
53
54 def main():
55     engine = create_engine(‘mysql+pymysql://xiang:[email protected]/sqlalchemy‘)
56     DBsession = sessionmaker(bind=engine)
57     session = DBsession()
58     # insert(session)
59     # update(session)
60     # delete(session)
61     # count(session)
62     # groupBy(session)
63     orderBy(session)
64
65
66 if __name__ == ‘__main__‘:
67     main()

原文地址:https://www.cnblogs.com/karl-python/p/9038700.html

时间: 2024-07-31 23:02:02

2018年5月13日笔记的相关文章

2018年5月8日笔记

CentOS 7上安装mysql # CentOS 7 安装mysql 1. 检测系统是否自带安装 mysql rpm -qa | grep mysql 2. 若已安装,可以进行卸载 rpm -e mysql //普通删除模式 rpm -e --nodeps mysql //强力删除模式,若普通删除时提示存在依赖文件,则进行强力删除 3. 安装mysql # centOS 7 yum install mariadb-server mariadb //在CentOS 7中,由于 MySQL数据库已

2018年4月14日笔记

函数关键字 def 函数声明 return 返回值 pass 略过,啥也不干 exit(1) 直接退出 高阶函数:可接收另一个函数作为参数的函数 常用的高阶函数有: map() reduce() filter() sorted() -> 最常用 map()函数:接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回 例1:我们有一个函数f(x)=x2,要把这个函数作用在一个list [1, 2, 3, 4]上,就可以用m

2018年4月26日笔记

内置模块:hashlib Python的hashlib提供了常见的摘要算法,如md5,sha1, sha224, sha256, sha384, sha512等等,其中md5最为常用. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示).md5算法得到的就是一个32位的16进制字符串. 一般用法如下:(python3环境中) 1 import hashlib 2 3 # python3 4 m1 = hash

2018年5月3日笔记

常用的正则表达式匹配规则 \d 表示一个数字字符,等价于 [0-9] \D 表示一个非数字字符,等价于 [^\d] \s 表示一个空白字符,等价于 [<空格>\t\r\n\f\v] \S 表示一个非空白字符,等价于 [^\s]\w 表示一个单词字符(数字或字母),等价于 [A-Za-z0-9_]\W 表示一个非单词字符,等价于 [^\w]. 匹配除换行符\n之外的任意一个字符 .* 在一行内,贪婪(尽可能多)匹配任意个字符 .*? 在一行内,非贪婪(尽可能少)匹配任意个字符 (?P<na

2018年5月19日笔记

进程的概念 进程是程序在计算机上的一次执行活动. 进程可分为系统进程和用户进程. 所有正在运行的进程轮流使用CPU,任何一个时间点有且只有一个进程占用CPU. 进程与线程的区别 进程 > 线程 多进程使用CPU的多个核,适合运算密集型 多线程使用CPU的一个核,核心IO密集型 python多进程 -- muiltiprocessing模块 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程.Py

今天是2018年07月13日,这篇文章是我补充刚开始的知识点的,谢谢。

1. 计算机是什么 基本组成: 主板+cpu+内存 cpu: 主频, 核数(16) 内存:大小(8G, 16G, 32G) 型号: DDR3, DDR4, DDR5, 主频(海盗船,玩家国度) 显卡: 显存.型号(N-GTX 1080 TI, A).位宽 240显卡(512MB) 210 105 硬盘: 西数.希捷.日立,东芝 计算机最底层是 电子电路. 只能识别两个数 0 1 2. python的简介 解释型语言. 弱类型语言 3. 安装 4. hello world print("你好啊.

2018年3月13日早晨的梦

梦到我.我爹和我妈三个人去了越南,住在一家简陋的宾馆里,晚上睡觉的时候我妈为了省钱让我们打地铺,点蜡烛.等天亮了我一个人出去溜达,发现越南人和中国人长的没什么两样,就是穿着打扮不同一些,我看到越南的山川河流非常美丽,心里生出一个邪恶的念头:中国要是占领了越南多好啊,大好河山就是我们的了. 我继续顺着大路溜达,发现前方有棵树,树上有个牌子,写着"前方有蛇,请路人注意安全".这时我一低头才发现路上好多被车压死的蛇,有大有小,赶紧吓得往回走.然后我和我爹.我妈出去准备找个餐馆吃点饭.路上发现

2018年4月10日笔记

Python的编码 常见的支持中文的编码有:utf-8 , gbk , gb2312 常见术语:decode(解码) , encode(编码) 在Python2中,不写python代码抬头,在print中文字符时会出现乱码:在Python3中不会出现这种情况. 因为Python2默认将代码文件内容用ASCII编码处理,所以不支持中文:而Python3默认将代码文件内容用utf-8编码处理. 使Python2支持中文有3种方式: 在代码抬头中加上 coding:utf-8 在中文字符串前加 u,如

2018年4月17日笔记

装饰器 作用:在不改变原函数功能的前提下,给现有函数新增功能 装饰器通过@来使用,相当于把原函数作为参数,传给现有函数 例1: 已有函数hello()如下,在hello()函数打印结果前后各加一行字符,作为现有函数的打印结果 def hello(): print("Hello World!") 例2:在例1的基础上,原函数hello()带有参数 例3:在例2原函数带参数的情况下,现有函数startEnd()也带有参数 个人总结: 在原函数和现有函数都带参数的情况下(例3): 先传现有函