


An article explaining in detail which ORM frameworks are used in Python website development
In the previous article, we more or less introduced the knowledge about Python, and in actual combat, we have to use python development page. In fact, using Framework Development Page is the simplest and easiest. In this chapter, we will introduce the development of pages using the orm framework in Python page development.
What is ORM
##ORM that is Object Relational Mapping, the full name is object relational mapping.
But what does it do? If you have come into contact with some web background optimization, we know that a large part of the work in the web background is the addition, deletion, modification and query of data. If you have to connect to the database, construct sql statements, and execute sql statements every time you operate the database, it will be unavoidable. It's too troublesome, so we can establish a one-to-one mapping relationship between the tables, fields, and rows in the database and the classes, class attributes, and objects in our object-oriented programming, so that we can avoid directly operating the database. Just call the corresponding method.
You can understand by taking an example of what I did in the past. For example, to implement a user registration, how I did it before was that the front desk got the data and passed it to the backend, and then the background strings were spliced to form a sql statement, which was executed in the background.
With
ORM, I only need to instantiate a User object with data, and then call the save method of the object to save it to the database. As a user, there is no need to operate a SQL statement statement. Assume that the User class corresponds to the users table
user=User(id="100001",name="Andy",password="*****") user.save() //保存到数据库 user=User.findById("100001") #从数据库中找出id为"100001"的用户 user.update(password="*********") #更改id为"100001"的用户密码 users=User.findAll() #取出users表中全部数据
Note
IO operations are all asynchronous, and the asynchronous library used is asyncioThe linked database is mysql 5.7, used The mysql asynchronous IO driver is the necessary preparation for aiomysql
to implement ORM --- encapsulating database operations
Create database Connection pool
import asyncioimport aiomysql async def create_pool(**kw):global __pool __pool=await aiomysql.create_pool( host=kw.get('host','localhost'), port=kw.get('port',3306), user=kw['user'], password=kw['password'], db=kw['db'], charset=kw.get('charset','utf8'), autocommit=kw.get('autocommit',True), # 自动提交事务 maxsize=kw.get('maxsize',10), # 池中最多有10个链接对象 minsize=kw.get('minsize',1), )
Encapsulates the select method
async def select(sql,args,size=None): //size可以决定取几条 global __pool with (await __pool) as conn: cur=await conn.cursor(aiomysql.DictCursor) # 用参数替换而非字符串拼接可以防止sql注入 await cur.execute(sql.replace('?','%s'),args) if size: rs=await cur.fetchmany(size) else: rs=await cur.fetchall() await cur.close() return rs
def execute(sql,args): global __pool try: with (await __pool) as conn: cur=await conn.cursor() await cur.execute(sql.replace('?', '%s'), args) affected=cur.rowcount await cur.close() except BaseException as e: raise e return affected
Start implementing ORM
There is an idea in programming called "top-down". So when you don't know how to designORM, you can assume that there is already an ORM framework, how do you want to use it?
class Model(object): async def find(self): pass class User(Model): # 注意这里的都是类属性 __table__="users" id=StringField(...) name=StringField(...) user=User(id="10001",name="Andy") user.save()
字段类的实现
class Field(object): def __init__(self,name,column_type,primary_key,default): self.name=name # 字段名 self.column_type=column_type # 字段数据类型 self.primary_key=primary_key # 是否是主键 self.default=default # 有无默认值 def __str__(self): return '<%s:%s>' % (self.__class__.__name__,self.name) class StringField(Field): def __init__(self,name=None,primary_key=False,default=None,ddl='varchar(100)'): super(StringField,self).__init__(name,ddl,primary_key,default) # 其它字段略,一个道理,一个模式
The above is the detailed content of An article explaining in detail which ORM frameworks are used in Python website development. 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

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

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



Solution to permission issues when viewing Python version in Linux terminal When you try to view Python version in Linux terminal, enter python...

When using Python's pandas library, how to copy whole columns between two DataFrames with different structures is a common problem. Suppose we have two Dats...

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...

Regular expressions are powerful tools for pattern matching and text manipulation in programming, enhancing efficiency in text processing across various applications.

How does Uvicorn continuously listen for HTTP requests? Uvicorn is a lightweight web server based on ASGI. One of its core functions is to listen for HTTP requests and proceed...

The article discusses popular Python libraries like NumPy, Pandas, Matplotlib, Scikit-learn, TensorFlow, Django, Flask, and Requests, detailing their uses in scientific computing, data analysis, visualization, machine learning, web development, and H

In Python, how to dynamically create an object through a string and call its methods? This is a common programming requirement, especially if it needs to be configured or run...
