demon1.py:
#!/ usr / bin / env python
# - * - 编码:utf-8 - * -
#@时间:2018/5/13 20:04
# @作者:lingxiangxiang
# @File:demon1.py
“””
创建一个测试库
创建数据库测试;
授权一个用户
将*。*的所有权限授予'1qaz @ WSX'标识的'xiang'@'%';
创建表
创建表student(id int not null);
查询
select * from tabel_name where条件1和条件2
增加
(1,'ling',25,'M',99),(2,'ajing',45,'F',88)插入到table_name(id,name,age,sex,grander)
改
update table_name set id = 10 where条件判断
删除
从table_name中删除where条件判断
drop table table_name
联合查询
从a.id = b.tid中的a a b B上选择a.id,b.name
创建索引
创建索引idx_库名_表名_列名1_列名2(列名1,列名2)
查看SQL是否走索引
解释select * from student where name ='ling'
链接数据库
Python2使用的是MySQLdb
python3使用的pymysql pip安装
1.创建链接和游标
注意:在mysql的连接中,尽量使用一个连接,确保MySQL的的并发数
conn = pymysql.connect(host ='',port =,user ='',passwd ='',db ='')
cus = conn.curse()
2.实行sql
sql =“select * from Student;”
cus.execute(SQL)
cus.fetchone()获取单个返回值元组
cus.fetchall()获取多个返回值列表(单个元素是元组)
cus.fetchmany(size = n)获取多个
3.关闭游标和连接
cus.close()
conn.close()
注意结合最后的使用
SQLAlchemy的
创建引擎
engine = create_engine('mysql + pymysql:// username:password @ hostname:port / db')
2.创建会话
DBsession = sessionmaker(bind =引擎)
session = DBsession()
3.创建表
一个。获得发动机
湾 元数据=元数据(引擎)
C。student = Table('表名',元数据,Colume('id',Integer,primary_key = True),Colume('name',String(50))
d。metadata.create_all()
4.增加
一个。先要有一个模型
Base = declarative_base(0
班级学生(基础):
__tablename__ ='学生'
id = Column(Integer,primary_key = True)
name = Column(String(100),primary_key = True)
湾 导入模型类,实例化该类,
sutdent1 =学生(1,'ling')
C。session.add(单实例)session.add_all([实例1,实例2])
5.查询
过滤和filter_by的区别
filter:可以使用> <等,但是列必须是:表。列,filter的等于号是==
session.query(学生).filter(Student.id> 100)
过滤器不支持组合查询
session.query(学生).filter(Studnet.id> 100).filter(名称== '灵')
filter_by:可以直接写列,不支持<> filter_by等于是==
session.query(学生).filter_by(ID == 10)
filter_by可以支持组合查询
session.query(Student).filter_by(name =='ling'and id =='342')
从学生中选择*如%ling%';
模糊查询含有玲的关键字
模糊查询
session.query(Student).filter(Student.name like('%ling%'))
获取数据的时候有两个方法:
一个()元组
all()list(单个元素是元组)
如果在查询中不写一(),或者所有()出来的就是sql语句
6.更新
先查出来
2.跟新一下类所对应的属性值就ok
3. session.commit()
student1 = session.query(Student).filter(Student.id == 1001)
student1.name =“test”
session.commit()
7.删除
先查出来
2.直接调用delete()方法就可以
3.提交一下
8.统计,分组,排序
统计:COUNT()
只需要在查出来以后,把一个或者全部替换成count()
统计有多少个
分组:GROUP_BY
查出来以后,把一个或者全部替换成GROUP_BY(属性)
demon2.py:
#!/ usr / bin / env python
# - * - 编码:utf-8 - * - #@时间:2018/5/13 20:55 # @作者:lingxiangxiang # @File:demon2.pyfrom sqlalchemy import create_engine,Integer,String,Column
来自 sqlalchemy.ext.declarative import declarative_base 从 sqlalchemy.orm 进口 sessionmaker Base = declarative_base() 班级 学生(基础): __tablename__ = '学生' id = Column(Integer,primary_key = True) name = Column(String(100)) 年龄=列(整数) address = Column(String(100)) def update(session): student1 = session.query(Student).filter(Student.id == 1001).one() student1.name = ' test123 ' session.commit() student2 = session.query(Student).filter(Student.id == 1001).one() 打印(student2.name) DEF 删除(会话): session.query(Student).filter(Student.id == 1001).delete() session.commit()def 插入(会话):
student1 =学生(id = 1004,姓名= ' ling ',年龄= 28,地址= ' shanxi ') session.add(student1) session.commit()def count(session):
numnber = session.query(Student).filter()。count() 打印(“总学生是{0} ”. format(numnber))def groupBy(session):
groupByAge = session.query(Student).group_by(Student.age).all() 打印(groupByAge) 对于我在 groupByAge中: 打印(i.id,i.name,i.age,i.address)def orderBy(session):
orderByAge = session.query(Student).order_by(Student.age.desc())。all() for x in orderByAge: 打印(x.id,x.name,x.age,x.address)def main():
engine = create_engine(' mysql + pymysql:// xiang:xiang@192.168.48.136/sqlalchemy ') DBsession = sessionmaker(bind =引擎) session = DBsession() #插入(会话) #更新(会话) #删除(会话) #计数(会话) # GROUPBY(会话) 排序依据(会话)