1、複習mysql經常使用操做python
一、建立庫mysql
create database test;
二、建立表sql
create table student(id int not null);
三、受權一個用戶數據庫
grant all privileges on *.* to 'username'@'%' identified by 'passwd'; 其中%通配全部地址
四、查詢session
select * from tabel_name where 條件1 and 條件2;
五、增長數據併發
insert into table_name (id, name, age, sex, grander) values (1, 'jsh', 25, 'M', 99), (2, 'Tom', 45, 'F', 88);
六、刪除數據ide
delete from table_name where 條件判斷; drop table table_name; 刪除表
七、改數據(更新數據)fetch
update table_name set id=10 where 條件判斷;
八、聯合查詢spa
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 student where name='JSH'
2、複習——MySQL 數據庫鏈接
一、Python2 使用mysqldb python3 使用 pymysql
二、建立連接 和 遊標
在mysql鏈接中,儘可能使用一個鏈接,確保mysql的併發數
conn = pymysql.connect(host='', port=, user='', passwd='', db='') # cus = conn.curse()
三、執行MySQL語句
sql = "select * from Student;" # cus.execute(sql) # cus.fetchone() 獲取單個 返回值 tuple # cus.fetchall() 獲取多個 返回值 list(單個元素是tuple) # cus.fetchmany(size=n) 獲取多個
四、關閉遊標 和 連接
注意結合try exception finally的使用
cus.close() conn.close()
3、複習——SQLAlchemy (對象關係映射)
一、建立引擎
engine = create_engine('mysql+pymysql://root:123456@192.168.6.137/sqlalchemy',echo=True)
二、建立session
DBsession = sessionmaker(bind=engine) session = DBsession()
三、建立表
a. 得到engine b. metadata = MetaData(engine) c. student = Table('表名', metadata, Colume('id', Integer, primary_key=True), Colume('name', String(50)) d. metadata.create_all()
四、增長數據
a. 先要有一個模型 Base = declarative_base(0 class Student(Base): __tablename__ = 'student' id = Column(Integer, primary_key=True) name = Column(String(100), primary_key=True) b. 導入模型類,實例化該類, sutdent1 = Student(1, 'ling') c. session.add(單實例) session.add_all([實例1, 實例2])
五、查詢
# filter和filter_by的區別 # filter:可使用> < 等,可是列必須是: 表.列, filter的等於號是== session.query(Student).filter(Student.id>100) # filter 不支持組合查詢 session.query(Student).filter(Studnet.id>100).filter(name='ling') # filter_by: 能夠直接寫列,不支持< > filter_by 等因而== session.query(Student).filter_by(id==10) # filter_by 能夠支持組合查詢 session.query(Student).filter_by(name='ling' and id='342') # 模糊查詢含有ling的關鍵字 select * from student where name like '%JSH%'; # 模糊查詢 # session.query(Student).filter(Student.name.like('%JSH%')) # 獲取數據的時候有兩個方法: # one() 獲取到的數據爲 tuple # all() 獲取到的數據爲 list(單個元素是tuple) # 若是在查詢中不寫one(), 或者all() 獲得的就是sql語句
六、更新
1. 先查出來 2. 跟新一下類所對應的屬性值就ok session.commit() student1 = session.query(Student).filter(Student.id=1001) student1.name = "test" session.commit()
七、刪除
# 1. 先查出來 # 2. 直接調用delete()方法就能夠 # 3. 提交一下
八、統計count() 分組
# 只須要在查出來之後, 把one或者all替換成count()
九、分組 group_by
查出來之後,把one或者all替換成group_by(屬性)