create database test1;
grant all privileges on *.* to 'feng'@'%' identified by '1qaz@WSX';
create table Teacher( teaId int not null, teaname varchar(100), age int, sex enum('M', 'F'), phone int);
select * from tabel_name where 条件1 and 条件2
insert into table_name (id, name, age, sex, grander) values (1, 'feng', 30, 'M', 99), (2, 'ajing', 45, 'F', 88);
update table_name set id=10 where 条件判断
delete from table_name where 条件判断 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)
explain select * from student where name='ling'
Python2 使用的是MySQLdb
python3 使用的pymysql pip安装python
(1) 建立连接和游标
注意:在mysql链接中,尽可能使用一个链接,确保mysql的并发数mysql
conn = pymysql.connect(host='', port=, user='', passwd='', db='') cus = conn.curse()
(2)执行sqlsql
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的使用session
engine = create_engine('mysql+pymysql://username:password@hostname:port/db')
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()
(1) 先要有一个模型并发
Base = declarative_base(0 class Student(Base): __tablename__ = 'student' id = Column(Integer, primary_key=True) name = Column(String(100), primary_key=True)
(2)导入模型类,实例化该类,ide
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') select * from student where name like '%ling%'; 模糊查询含有ling的关键字
模糊查询fetch
session.query(Student).filter(Student.name like('%ling%'))
获取数据的时候有两个方法:
one() tuple
all() list(单个元素是tuple)
若是在查询中不写one(), 或者all() 出来的就是sql语句spa
(1) 先查出来
(2) 跟新一下类所对应的属性值就ok
(3) session.commit()code
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(属性)