Flask-sqlalchemy是關(guān)于flask一個(gè)針對(duì)數(shù)據(jù)庫(kù)管理的。文中我們采用一個(gè)關(guān)于員工顯示例子。
首先,我們創(chuàng)建SQLALCHEMY對(duì)像db。
from flask import Flask, render_template,requestfrom flask_sqlalchemy import SQLAlchemyapp = Flask(__name__,static_url_path='')app.debug = Trueapp.secret_key = "faefasdfaf"app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///./db/personal.db' # app的配置,指定數(shù)據(jù)庫(kù)路徑app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = Trueapp.config['SQLALCHEMY_ECHO'] = True db = SQLAlchemy(app)
然后我們利用db創(chuàng)建員工表:
from datetime import datetimeclass Employee(db.Model):  '''員工'''  __tablename__ = 'employee'  id = db.Column(db.Integer, primary_key=True)  name = db.Column(db.String(50))  gender = db.Column(db.String)  job = db.Column(db.String)  birthday = db.Column(db.DateTime)  idcard = db.Column(db.String)  address = db.Column(db.String)  salary = db.Column(db.String)  release_time = db.Column(db.DateTime)  def __init__(self, name, gender, job, birthday, idcard, address, salary, release_time=None):    self.name = name    self.gender = gender    self.job = job    self.birthday = birthday    self.idcard = idcard    self.address = address    self.salary = salary    self.release_time = release_time if release_time else datetime.now()  def __repr__(self):    return '<員工{},{},{},{}>'.format(self.id, self.name, self.salary, self.address)表創(chuàng)建好之后,我們可以從表中查詢數(shù)據(jù)了。
from flask import render_templatefrom flask.views import MethodViewclass EmployeeListView(MethodView): # 獲取員工信息  def get(self,page=1):    employees = Employee.query.paginate(page,per_page=10)    return render_template('employeelist.html', employees=employees)以上我們通過(guò)查詢,查詢出員工信息,然后傳給前臺(tái)一個(gè)模板。(以上我們采用了flask的藍(lán)圖進(jìn)行了分模塊,假設(shè)我們把上面這個(gè)定義為視圖函數(shù)為:employee.list)
注:paginate是分頁(yè)的方法,第一個(gè)參數(shù)是頁(yè)碼,第二個(gè)是每頁(yè)顯示多少條。但是這樣得到的結(jié)果不是一列表,需要在傳到前臺(tái)的值加一個(gè) .items,下面舉例說(shuō)明。(利用jinja2模板)
 {% for item in employees.items %}
如上所示,在利用Jinja2去取值時(shí),需要在后臺(tái)傳過(guò)來(lái)的值后面,加上.items。
繼續(xù)上面的分頁(yè),這里我們要再次利用jinja2模板來(lái)定義一個(gè)方法,以實(shí)現(xiàn)分頁(yè)的功能,這個(gè)頁(yè)面名字就叫:helper.html。
{% macro render_page_data(page_data,page_function) %}  <div class="text-center">    <ul class="page_data">      <li><a href="{{ url_for(page_function,page = 1) }}">首頁(yè)</a></li>      {% if page_data.has_prev %}        <li><a href="{{ url_for(page_function,page = page_data.prev_num) }}">«</a></li>      {% endif %}      {% for page in page_data.iter_pages() %}        {% if page %}          {% if page !=page_data.page %}            <li><a href="{{ url_for(page_function,page = page) }}">{{ page }}</a></li>          {% else %}            <li class="active"><a href="#">{{ page }}</a></li>          {% endif %}        {% endif %}      {% endfor %}      {% if page_data.has_next %}        <li><a href="{{ url_for(page_function,page = page_data.next_num) }}">»</a></li>      {% endif %}      <li><a href="{{ url_for(page_function,page = page_data.pages) }}">末頁(yè)</a></li>    </ul>  </div>{% endmacro %}            
| 
 
 | 
新聞熱點(diǎn)
疑難解答
圖片精選