數(shù)據(jù)庫操作軟件,類似于php里面的pdo,但是比pdo更靈活、復(fù)雜,能將數(shù)據(jù)庫中的表和程序中的class一一對應(yīng),方便調(diào)用,如果前期能寫好class,后期不用寫sql;
安裝pip install flask_sqlalchemy
創(chuàng)建表:
1 from flask_sqlalchemy import SQLAlchemy 2 from sqlalchemy import * 3 from sqlalchemy.orm import * 4 #上面導入的文件可能有些用不到; 5 engine=create_engine("mysql://root:root@localhost:3306/flask?charset=utf8",echo=True) 6 metadata=MetaData(engine) 7 goods=Table('goods',metadata, 8 Column('id',Integer,primary_key=True), 9 Column('name',String(20)),10 Column('fullname',String(40)),11 )12 metadata.create_all()
插入數(shù)據(jù):
1 #-*-coding:utf-8-*- 2 from flask_sqlalchemy import SQLAlchemy 3 from sqlalchemy import * 4 from sqlalchemy.orm import * 5 #鏈接數(shù)據(jù)庫并初始化對象 6 engine=create_engine("mysql://root:root@localhost:3306/flask?charset=utf8",echo=True) 7 metadata=MetaData(engine) 8 9 users_table = Table("goods",metadata,autoload=True) #這個應(yīng)該是初始化表10 i = users_table.insert() #調(diào)用對象中的insert()方法,產(chǎn)生語句:INSERT INTO goods (id, name, fullname) VALUES (%s, %s, %s)11 result = i.execute(name = "summer",fullname = "736960938@qq.com") #傳入?yún)?shù)并執(zhí)行12 print(result)查詢數(shù)據(jù)1、看到插入數(shù)據(jù)用的這種方式,于是想到了查詢應(yīng)該也可以吧;
1 users_table = Table("goods",metadata,autoload = True)2 i = users_table.select()3 result = i.execute(name="xiaoge")4 #這種方式查詢好像有點尷尬,對象里面包含對象,不能直接看到查詢結(jié)果5 print(result)
2、將表與class建立對應(yīng)關(guān)系
1 goods_table = Table("goods",metadata,autoload = True) 2 ''' 3 建立表和class的映射關(guān)系 4 ''' 5 class Goods(object): 6 def __repr__(self): 7 return "%s(%r,%r)" % (self.__class__,self.name,self.fullname) 8 mapper(Goods,goods_table) 9 '''建立關(guān)系結(jié)束'''10 session = create_session()11 query = session.query(Goods)12 u=query.filter_by(name = "xiaoge").first()13 print(u.fullname)object.__dict__查看對象中的內(nèi)容,不遞歸顯示 查詢所有數(shù)據(jù):
1 goods_table = Table("goods",metadata,autoload = True) 2 ''' 3 建立表和class的映射關(guān)系 4 ''' 5 class Goods(object): 6 def __repr__(self): 7 return "%s(%r,%r)" % (self.__class__,self.name,self.fullname) 8 mapper(Goods,goods_table) 9 '''建立關(guān)系結(jié)束'''10 session = create_session()11 query = session.query(Goods)12 u = query.all()13 for i in u:#返回多個對象,遍歷即可14 print(i.name)
Copyright ? 2019- 91gzw.com 版權(quán)所有 湘ICP備2023023988號-2
違法及侵權(quán)請聯(lián)系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市萬商天勤律師事務(wù)所王興未律師提供法律服務(wù)