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!

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

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



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.

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

The readdir function in the Debian system is a system call used to read directory contents and is often used in C programming. This article will explain how to integrate readdir with other tools to enhance its functionality. Method 1: Combining C language program and pipeline First, write a C program to call the readdir function and output the result: #include#include#include#includeintmain(intargc,char*argv[]){DIR*dir;structdirent*entry;if(argc!=2){

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.

This article will guide you on how to update your NginxSSL certificate on your Debian system. Step 1: Install Certbot First, make sure your system has certbot and python3-certbot-nginx packages installed. If not installed, please execute the following command: sudoapt-getupdatesudoapt-getinstallcertbotpython3-certbot-nginx Step 2: Obtain and configure the certificate Use the certbot command to obtain the Let'sEncrypt certificate and configure Nginx: sudocertbot--nginx Follow the prompts to select

Developing a GitLab plugin on Debian requires some specific steps and knowledge. Here is a basic guide to help you get started with this process. Installing GitLab First, you need to install GitLab on your Debian system. You can refer to the official installation manual of GitLab. Get API access token Before performing API integration, you need to get GitLab's API access token first. Open the GitLab dashboard, find the "AccessTokens" option in the user settings, and generate a new access token. Will be generated

Configuring an HTTPS server on a Debian system involves several steps, including installing the necessary software, generating an SSL certificate, and configuring a web server (such as Apache or Nginx) to use an SSL certificate. Here is a basic guide, assuming you are using an ApacheWeb server. 1. Install the necessary software First, make sure your system is up to date and install Apache and OpenSSL: sudoaptupdatesudoaptupgradesudoaptinsta

Apache is the hero behind the Internet. It is not only a web server, but also a powerful platform that supports huge traffic and provides dynamic content. It provides extremely high flexibility through a modular design, allowing for the expansion of various functions as needed. However, modularity also presents configuration and performance challenges that require careful management. Apache is suitable for server scenarios that require highly customizable and meet complex needs.
