2018-5-13

demon1.py:

#!/ 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(屬性)

 

demon2.py:

#!/ 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(會話)     排序依據(會話)

本站公眾號
   歡迎關注本站公眾號,獲取更多信息