#!/ usr / bin / env pythonpython
# - * - 編碼:utf-8 - * -mysql
#@時間:2018/5/13 20:04sql
# @做者:lingxiangxiang數據庫
# @File:demon1.pysession
「」」併發
建立一個測試庫測試
建立數據庫測試;fetch
受權一個用戶編碼
將*。*的全部權限授予'1qaz @ WSX'標識的'xiang'@'%';spa
建立表
建立表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(屬性)
#!/ usr / bin / env python
# - * - 編碼:utf-8 - * -
#@時間:2018/5/13 20:55
# @做者:lingxiangxiang
# @File:demon2.py
from 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(會話) 排序依據(會話)