1. 程式人生 > 其它 >flask之SQLAlchemy使用

flask之SQLAlchemy使用

技術標籤: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()接觸遮蔽,就是建立好表,然後再插入點資料,如果之後再進行操作,把該句遮蔽就行