ORM framework Flask-SQLAlchemy in Python in practice
ORM (Object-Relational Mapping) is a programming technology that maps table data in a relational database to objects in a programming language, allowing program developers to operate the database in an object-oriented manner. Flask-SQLAlchemy is a powerful ORM framework that can greatly simplify the operation of Python programs on relational databases.
This article will introduce the use of the Flask-SQLAlchemy framework in detail through an example.
- Environment configuration
Before learning Flask-SQLAlchemy, we need to install Flask and SQLAlchemy modules first. You can install it using the pip command in the Python environment.
pip install Flask
pip install SQLAlchemy
- Database configuration
Configure the MySQL database as the persistent storage of the project, before creating Flask-SQLAlchemy object, just pass the following parameters:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
First parameter: flask Application example
Second parameter: Database connection URI
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:password@localhost:3306/test'
Turn off the SQLALCHEMY_TRACK_MODIFICATIONS option to improve program running efficiency
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
Initialize the db object
db = SQLAlchemy(app)
Call app.config to set the configuration parameters of the Flask application instance. The SQLALCHEMY_DATABASE_URI parameter is used to specify the connected database type, user name, password, IP address, port number, database name and other information.
- ORM implementation
Define data model
First, we need to define the data model, which is the mapping object of ORM. Here we take student information as an example , define a Student class:
from datetime import datetime
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
SQLAlchemy ORM design model
class Student(db.Model):
# 定义表名 __tablename__ = 'student' # 定义表结构,其中id为主键,自增长 id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(20), nullable=False) gender = db.Column(db.String(2), nullable=False) birthday = db.Column(db.Date, default=datetime.now()) address = db.Column(db.String(200), nullable=False) # 类对象序列化成字典 def to_dict(self): return {c.name: getattr(self, c.name, None) for c in self.__table__.columns}
In the Student class, we define the table structures of __tablename__, id, name, gender, birthday, and address. Among them, __tablename__ is used to specify the table name, id is used to specify the primary key and grow automatically, and the fields name, gender, birthday, and address are used to store information about the student's name, gender, birthday, and address.
Add, delete, modify and query operations
Next, we implement the add, delete, modify and query operations:
(1) Add student information
@app.route(' /add', methods=['POST'])
def add_student():
student = Student() student.name = request.form.get('name') student.gender = request.form.get('gender') student.birthday = datetime.strptime(request.form.get('birthday'), '%Y-%m-%d').date() student.address = request.form.get('address') db.session.add(student) db.session.commit() return jsonify({'code': 200, 'msg': 'add student success.'})
First get the submitted form data through request.form.get(), then create the Student object and set the attribute value , finally add the object to the database through db.session.add(), and commit the transaction through db.session.commit().
(2) Delete student information
@app.route('/delete/
def delete_student(id ):
student = Student.query.get(id) if student: db.session.delete(student) db.session.commit() return jsonify({'code': 200, 'msg': 'delete student success.'}) else: return jsonify({'code': 404, 'msg': 'student not found.'})
Pass the student id parameter, obtain the student instance through the query.get() method, and use the db.session.delete() method to delete it from the database and delete it from the database through db.session .commit() commits the transaction.
(3) Modify student information
@app.route('/update/
def update_student(id ):
student = Student.query.get(id) if student: student.name = request.form.get('name') student.gender = request.form.get('gender') student.birthday = datetime.strptime(request.form.get('birthday'), '%Y-%m-%d').date() student.address = request.form.get('address') db.session.commit() return jsonify({'code': 200, 'msg': 'update student success.'}) else: return jsonify({'code': 404, 'msg': 'student not found.'})
Similarly obtain the student instance based on the student id parameter. After modifying the student information, use db.session.commit() to submit the transaction.
(4) Query student information
@app.route('/search')
def search_student():
students = Student.query.all() if students: return jsonify({'code': 200, 'msg': 'search student success.', 'data': [student.to_dict() for student in students]}) else: return jsonify({'code': 404, 'msg': 'student not found.'})
Use query.all() method Query all student information in the Student table, and use list comprehension to convert the student object list into a dictionary list and return it.
- Summary
Flask-SQLAlchemy is a very powerful ORM framework that can make Python code for database operations simpler and more readable. This article provides an in-depth introduction to the use of Flask-SQLAlchemy through an example.
In actual development, we can define the data model and implement addition, deletion, modification and query operations in a manner similar to this article. The complexity of these operations is very low. Using the Flask-SQLAlchemy framework allows us to improve development efficiency and reduce program maintenance costs.
The above is the detailed content of ORM framework Flask-SQLAlchemy in Python in practice. For more information, please follow other related articles on the PHP Chinese website!

To maximize the efficiency of learning Python in a limited time, you can use Python's datetime, time, and schedule modules. 1. The datetime module is used to record and plan learning time. 2. The time module helps to set study and rest time. 3. The schedule module automatically arranges weekly learning tasks.

Python excels in gaming and GUI development. 1) Game development uses Pygame, providing drawing, audio and other functions, which are suitable for creating 2D games. 2) GUI development can choose Tkinter or PyQt. Tkinter is simple and easy to use, PyQt has rich functions and is suitable for professional development.

Python is suitable for data science, web development and automation tasks, while C is suitable for system programming, game development and embedded systems. Python is known for its simplicity and powerful ecosystem, while C is known for its high performance and underlying control capabilities.

You can learn basic programming concepts and skills of Python within 2 hours. 1. Learn variables and data types, 2. Master control flow (conditional statements and loops), 3. Understand the definition and use of functions, 4. Quickly get started with Python programming through simple examples and code snippets.

Python is widely used in the fields of web development, data science, machine learning, automation and scripting. 1) In web development, Django and Flask frameworks simplify the development process. 2) In the fields of data science and machine learning, NumPy, Pandas, Scikit-learn and TensorFlow libraries provide strong support. 3) In terms of automation and scripting, Python is suitable for tasks such as automated testing and system management.

You can learn the basics of Python within two hours. 1. Learn variables and data types, 2. Master control structures such as if statements and loops, 3. Understand the definition and use of functions. These will help you start writing simple Python programs.

How to teach computer novice programming basics within 10 hours? If you only have 10 hours to teach computer novice some programming knowledge, what would you choose to teach...

How to avoid being detected when using FiddlerEverywhere for man-in-the-middle readings When you use FiddlerEverywhere...


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Zend Studio 13.0.1
Powerful PHP integrated development environment

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

WebStorm Mac version
Useful JavaScript development tools

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft