个性化阅读
专注于IT技术分析

Python Flask SQLAlchemy ORM数据开发实例

Flask SQLAlchemy是一个ORM工具, 用于建立对象和关系数据库表之间的关系。

两者之间的映射很重要, 因为python能够以对象的形式存储数据, 而数据库则以关系表(即行和列的集合)的形式存储数据。

对象关系映射是一种将python对象存储到数据库表中而无需编写原始SQL查询的技术。

在本教程的这一部分中, 我们将使用flask-sqlalchemy ORM技术创建一个小型Web应用程序。

安装flask-sqlalchemy

要使用flask ORM技术创建Web应用程序, 我们必须使用pip安装程序安装flask-sqlalchemy。

$ pip install flask-sqlalchemy

要确认安装, 请尝试在python shell上导入模块。如果导入成功, 则安装成功。

$ import flask_sqlalchemy

使用flask-sqlalchemy创建小型Web应用程序

在本教程的这一部分中, 我们将使用ORM SQLAlchemy在python中创建一个CRUD应用程序。

例子

add.html

<!DOCTYPE html>
<html>
   <body>
      <h3>Add new Employee</h3>
      <hr/>
      
      {%- for category, message in get_flashed_messages(with_categories = true) %}
         <div class = "alert alert-danger">
            {{ message }}
         </div>
      {%- endfor %}
      
      <form action = "{{ request.path }}" method = "post">
         <label for = "name">Name</label><br>
         <input type = "text" name = "name" placeholder = "Name" /><br>
 
         <label for = "salary">Salary</label><br>
         <input type = "text" name = "salary" placeholder = "salary" /><br>
         
         <label for = "age">Age</label><br>
         <textarea name = "age" placeholder = "age"></textarea><br>
         
         <label for = "PIN">Pin</label><br>
         <input type = "text" name = "pin" placeholder = "pin" /><br>
         
         <input type = "submit" value = "Submit" />
      </form>
   </body>
</html>

list_employees.html

<!DOCTYPE html>
<html lang = "en">
   <head><title>Home</title></head>
   <body>
      <h3>
         <a href = "{{ url_for('list_employees') }}">Employee Management System</a>
      </h3>
      
      <hr/>
      {%- for message in get_flashed_messages() %}
         {{ message }}
      {%- endfor %}
		
      <h3>Employees List</h3>
      <table border="2" padding = "5">
         <thead>
            <tr>
               <th>Name</th>
               <th>Salary</th>
               <th>Age</th>
               <th>Pin</th>
            </tr>
         </thead>

         <tbody>
            {% for employee in Employees %}
               <tr>
                  <td>{{ employee.name }}</td>
                  <td>{{ employee.salary }}</td>
                  <td>{{ employee.age }}</td>
                  <td>{{ employee.pin }}</td>
               </tr>
            {% endfor %}
         </tbody>
      </table>
      <br><br>
      <a href="{{ url_for('addEmployee') }}">Add New Employee</a>
   </body>
</html>

app.py

from flask import Flask, request, flash, url_for, redirect, render_template
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///employees.sqlite3'
app.config['SECRET_KEY'] = "secret key"

db = SQLAlchemy(app)

class Employees(db.Model):
   id = db.Column('employee_id', db.Integer, primary_key = True)
   name = db.Column(db.String(100))
   salary = db.Column(db.Float(50))
   age = db.Column(db.String(200)) 
   pin = db.Column(db.String(10))

   def __init__(self, name, salary, age, pin):
      self.name = name
      self.salary = salary
      self.age = age
      self.pin = pin

@app.route('/')
def list_employees():
   return render_template('list_employees.html', Employees = Employees.query.all() )

@app.route('/add', methods = ['GET', 'POST'])
def addEmployee():
   if request.method == 'POST':
      if not request.form['name'] or not request.form['salary'] or not request.form['age']:
         flash('Please enter all the fields', 'error')
      else:
         employee = Employees(request.form['name'], request.form['salary'], request.form['age'], request.form['pin'])
         
         db.session.add(employee)
         db.session.commit()
         flash('Record was successfully added')
         return redirect(url_for('list_employees'))
   return render_template('add.html')

if __name__ == '__main__':
   db.create_all()
   app.run(debug = True)

输出

Python Flask SQLAlchemy ORM数据开发实例

单击链接”添加新员工”以将新员工添加到数据库。

Python Flask SQLAlchemy ORM数据开发实例

单击提交, 我们将在主页列表中看到新添加的员工。

Python Flask SQLAlchemy ORM数据开发实例

赞(0)
未经允许不得转载:srcmini » Python Flask SQLAlchemy ORM数据开发实例

评论 抢沙发

评论前必须登录!