您好,登錄后才能下訂單哦!
數(shù)據(jù)庫(kù)操作使用
sqlalchemy模塊安裝(需安裝MySQL-python/python-devel) pip install flask-sqlalchemy
目錄結(jié)構(gòu)
├── app │ ├── __init__.py │ └── models.py ├── config.py
配置環(huán)境
vim config.py #coding:utf-8 SQLALCHEMY_DATABASE_URI = 'mysql://mysqlTest:mysqlTest@192.168.3.85/mysqlTest' SQLALCHEMY_TRACK_MODIFICATIONS = True #python版本低報(bào)出警告
#初始化 vim app/__init__.py from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config.from_object('config') db = SQLAlchemy(app) from app import models
#定義表模型(舉例用) vim app/models.py from app import db class User(db.Model): id = db.Column(db.Integer,primary_key = True) nickname = db.Column(db.String(64),index=True,unique = True) email = db.Column(db.String(120),index=True,unique = True) def __repr__(self): return '<User %r>' % (self.nickname)
shell模式下使用介紹
#創(chuàng)建數(shù)據(jù)模型/刪除數(shù)據(jù)模型 >>> from app import db >>> from app.models import User #導(dǎo)入U(xiǎn)ser模型 >>> db.create_all() #創(chuàng)建數(shù)據(jù)庫(kù)模型 >>> db.drop_all() >>> db.create_all()
#添加數(shù)據(jù) #單條數(shù)據(jù)的提交方式 >>> name_admin = User(nickname='admin',email='admin@flask.com') #賦值數(shù)據(jù) >>> db.session.add(name_admin) #添加數(shù)據(jù) >>> db.session.commit() #提交數(shù)據(jù) #多條數(shù)據(jù)的提交方式 >>> name_user1 = User(nickname='user1',email='user1@flask.com') >>> name_user2 = User(nickname='user2',email='user2@flask.com') >>> db.session.add_all([name_user1,name_user2]) #提交的是一個(gè)列表 >>> db.session.commit()
mysql> select * from user; +----+----------+-----------------+ | id | nickname | email | +----+----------+-----------------+ | 1 | admin | admin@flask.com | | 2 | user1 | user1@flask.com | | 3 | user2 | user2@flask.com | +----+----------+-----------------+
查詢(xún)數(shù)據(jù)
#查詢(xún)所有數(shù)據(jù) all=User.query.all() #過(guò)濾查詢(xún)(filter_by()),查詢(xún)nickname=user1的行 >>> user1 = User.query.filter_by(id=2).first() >>> user2 = User.query.filter_by(id=3).first() >>> user1 <User u'user1'> >>> user2 <User u'user2'> #查詢(xún)?cè)撔袛?shù)據(jù)的各個(gè)字段,查看nickname字段的值 >>> user1.nickname u'user1' >>> user2.nickname u'user2' #結(jié)果顯示限制(limit()),顯示兩條查詢(xún)結(jié)果 >>> result = User.query.limit(2).all() >>> result [<User u'admin'>, <User u'user001'>]
修改數(shù)據(jù)
#修改數(shù)據(jù),修改對(duì)應(yīng)字段的值后直接提交即可 #修改use1的nickname字段的值為user001 user1.nickname = 'user001' db.session.add(user1) db.session.commit()
刪除數(shù)據(jù) db.session.delete(user1) db.session.commit()
#常見(jiàn)查詢(xún)過(guò)濾器 filter() 把過(guò)濾器添加到原查詢(xún)上,返回一個(gè)新查詢(xún) filter_by() 把等值過(guò)濾器添加到原查詢(xún)上,返回一個(gè)新查詢(xún) limit() 使用指定的值限制原查詢(xún)返回的結(jié)果數(shù)量,返回一個(gè)新查詢(xún) offset() 偏移原查詢(xún)返回的結(jié)果,返回一個(gè)新查詢(xún) order_by() 根據(jù)指定條件對(duì)原查詢(xún)結(jié)果進(jìn)行排序,返回一個(gè)新查詢(xún) group_by() 根據(jù)指定條件對(duì)原查詢(xún)結(jié)果進(jìn)行分組,返回一個(gè)新查詢(xún)
#常見(jiàn)查詢(xún)執(zhí)行函數(shù) all() 以列表形式返回查詢(xún)的所有結(jié)果 first() 返回查詢(xún)的第一個(gè)結(jié)果,如果沒(méi)有結(jié)果,則返回 None first_or_404() 返回查詢(xún)的第一個(gè)結(jié)果,如果沒(méi)有結(jié)果,則終止請(qǐng)求,返回 404 錯(cuò)誤響應(yīng) get() 返回指定主鍵對(duì)應(yīng)的行,如果沒(méi)有對(duì)應(yīng)的行,則返回 None get_or_404() 返回指定主鍵對(duì)應(yīng)的行,如果沒(méi)找到指定的主鍵,則終止請(qǐng)求,返回 404 錯(cuò)誤響應(yīng) count() 返回查詢(xún)結(jié)果的數(shù)量 paginate() 返回一個(gè) Paginate 對(duì)象,它包含指定范圍內(nèi)的結(jié)果
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。