python 笔记 之 复习-数据库操作-笔记

'''
复习
数据库操作-笔记
'''

'''
创建一个test库
create database test;
授权一个用户
grant all privilges on *.* to 'chen'@'%' identified by '123456' with grant option;
创建表
create table student(id int not null);
查询
select * from table_name where 条件1 and 条件2
增加
insert into table_name (id,name,age,sex) values (1,'ling',25,'M')
改
update table_name set id=10
删除
delete from table_name where 条件判读( name='ling' )
drop table table_name
truncate table table_name

联合查询
select a.id, b.name from A a join B b on a.id = b.xid

创建索引
create index idx_库名_表名_列名1_列名2(列名1,列名2)
查看sql 是否走索引


'''

'''
链接数据库
Python2 使用的是MySQLdb
Python3 使用的pymysql pip安装

1.创建链接和游标
注意:在mysql链接中,尽量使用一个链接,确保mysql的并发数
conn = pymysql.connect(host='',port='',user='',passwd='',db='')
cus = conn.course()
2.执行sql
sql = "select * from Student;"
cus.execute(sql)
cus.fetchone() 获取单个 返回tuple
cus.fetchall() 获取多个 返回list(单个元素是tuple)
cus.fetchmany(size=n)
3.关闭游标和链接
cus.close()
conn.close()
注意结合try exception finally的使用
'''

'''
SQLAlchemy
1.创建引擎
engine=create_engine('mysql+pymysql://username:password@hostname:port/dbname')
2.创建session
DbSession = sessionmaker(bind=engine)
session = DBsession()
3.创建表
  a.获得engine
  b.metadata = MetaData(engine)
  c.student = Table('表名',metadata,
  Column('id',Integer,primary_key=True),
  
  )
  d.metadata.create_all() # 以存在时不操作
4.增加
a.先要有一个模型
Base = declarative_base(0)
class Student(Base):
  __tablename__ = 'student'
  id = Column(Integer,primary_key=True)
  anme = Column(String(100),primary_key=True)
b.导入模型类,实例化类
c.session.add(单实例) session.add_all([实例1,实例2])

5.查询
filter 和 filter_by 的区别
filter : 可以使用< > =  ,列表必须是 表.列  
不支持组合查询  等于是==
session.query(Student).filter(Student.id>100).first()
session.query(Student).filter(Student.id>100).fillter(name="aa")

filter_by  可以直接使用列  不支持< > =  等于是==
可以组合查询
session.query(Student).filter_by(id==10).first()
session.query(Student).filter_by(id==10 and name=='ling').first()

like 
select * from student where name like "%ling%"
模糊查询含有ling的关键字
模糊查询
session.query(Student).filter(Student.name like('%ling%'))

获取数据的时候有两个方法:
one()   tuple
all()   list(单个元素是tuple)


6.更新
1.先查出来
2.更新一下类对应的属性值
3.session.commit()
my_student = sesion.query(Student).filter(Student.name)
stu1.name = 'test'
sesion.commit()

7.删除
1.先查出来
2.直接调用delete()方法就可以了
3.提交一下

8.统计,分组,排序
统计:count()
只要在查出来以后,把one或者all替换成count()
统计有多少个

分组:group_by
'''

猜你喜欢

转载自my.oschina.net/u/3824134/blog/1811768