flask之SQLAlchemy使用
阿新 • • 發佈:2020-12-30
技術標籤:python
一:目錄結構如下:
二:程式碼實現:
models->user.py
from demo1225.run import db class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer,primary_key = True) name = db.Column(db.String(64),unique = True,index = True) age = db.Column(db.Integer,default = 18) # 顯示可讀字串 def __repr__(self): return 'Users %s'%self.name
templates->index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <table border = '1'> <tr> <td>姓名</td> <td>年齡</td> </tr> <tr> <td> {{ data.name }} </td> <td> {{ data.age }} </td> </tr> </table> </body> </html>
templates->login.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Xiaotaotao</title> </head> <body> <form method="post"> <label>姓名:</label><input type="text" name="username" placeholder="請輸入姓名"><br/> <label>年紀:</label><input type="password" name="userage" placeholder="請輸入年紀"><br/> <input type="submit" value="提交"> </form> </body> </html>
conf.py
注意:這裡的資料庫可以先建立好了,再填寫
class DEVConfig(object):
DEBUG = True
SECRET_KEY = 'wocao'
# 資料庫設定
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://資料庫使用者名稱:密碼@127.0.0.1:3306/你建立的資料庫?charset=utf8'
SQLALCHEMY_TRACK_MODIFICATIONS = True
# 查詢時會顯示原始SQL語句
SQLALCHEMY_ECHO = True
run.py
from flask import Flask,render_template,request
from demo1225.conf import DEVConfig
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate,MigrateCommand
from flask_script import Manager
app = Flask(__name__)
# 配置資料庫
app.config.from_object(DEVConfig)
# 初始化sqlalchemy
db = SQLAlchemy(app)
from demo1225.models.user import *
# 遷移資料庫
migrate = Migrate(app,db)
manager = Manager(app)
manager.add_command('db',MigrateCommand)
@app.route('/')
def menu():
return 'ok'
@app.route('/index')
def index():
# 返回查詢
user = User.query.first()
name = user.name
age = user.age
data = {
'name':name,
'age':age
}
return render_template('index.html',data = data)
@app.route('/login',methods = ['POST','GET'])
def login():
if request == 'POST':
username = request.form.get('username')
userage = request.form.get('userage')
list = User(name = username,age = userage)
db.session.add(list)
db.session.commit()
return render_template('login.html')
if __name__ == '__main__':
#db.create_all()
app.debug=True
app.run(port = 8808)
最後需要注意的是:
在進行上述操作的時候,第一次執行的時候,先把main函式中的第一個db.create_all()接觸遮蔽,就是建立好表,然後再插入點資料,如果之後再進行操作,把該句遮蔽就行