下面我将详细讲解如何使用 Python 实现一个简易的 ORM 模型的完整攻略,这个攻略包含以下步骤:
一、什么是ORM
ORM(Object-Relational Mapping)即对象关系映射,ORM 的目的是将关系型数据库(如 MySQL)中的表与 Python 对象建立映射关系,在 Python 中直接操作 Python 对象,而不是 SQL 语句。
ORM 模型可以简化操作数据库的步骤,提高开发效率,同时也降低了代码复杂度。
二、Python ORM 模型的基本实现
Python ORM 模型的基本实现分为两步:
步骤一:定义数据库表对应的 Python 类
以 MySQL 中的一个表 stu
为例,表结构如下:
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
id | int(11) | NO | PRI | NULL | auto_increment |
name | varchar(255) | YES | NULL | ||
age | int(11) | YES | NULL |
我们需要定义一个 Python 类,它对应 MySQL 中表 stu
的结构。定义代码如下:
class Stu:
def __init__(self, id=None, name="", age=0):
self.id = id
self.name = name
self.age = age
步骤二:编写 ORM 操作代码
引入必要的包:
import mysql.connector
from mysql.connector import Error
连接 MySQL 数据库:
try:
connection = mysql.connector.connect(host='localhost',
database='my_db',
user='root',
password='password')
if connection.is_connected():
db_Info = connection.get_server_info()
print("Connected to MySQL database... MySQL Server version on ", db_Info)
cursor = connection.cursor()
except Error as e:
print("Error while connecting to MySQL", e)
插入数据:
def insert_stu(stu):
"""
Insert new row into stu table
"""
cursor = connection.cursor()
query = """INSERT INTO stu (name, age) VALUES (%s, %s)"""
values = (stu.name, stu.age)
cursor.execute(query, values)
connection.commit()
print("1 record inserted, ID:", cursor.lastrowid)
查询数据:
def select_all_stus():
"""
Query all rows in the stu table
"""
cursor = connection.cursor()
query = "SELECT * FROM stu"
cursor.execute(query)
records = cursor.fetchall()
for row in records:
print(f"ID: {row[0]}")
print(f"Name: {row[1]}")
print(f"Age: {row[2]}\n")
def select_stu_by_id(stu):
"""
Query row in the stu table by id
"""
cursor = connection.cursor()
query = "SELECT * FROM stu WHERE id = %s"
values = (stu.id,)
cursor.execute(query, values)
record = cursor.fetchone()
print(f"ID: {record[0]}")
print(f"Name: {record[1]}")
print(f"Age: {record[2]}\n")
更新数据:
def update_stu(stu):
"""
Update row in the stu table
"""
cursor = connection.cursor()
query = """UPDATE stu SET name = %s, age = %s WHERE id = %s"""
values = (stu.name, stu.age, stu.id)
cursor.execute(query, values)
connection.commit()
print(f"{cursor.rowcount} record(s) updated")
删除数据:
def delete_stu(stu):
"""
Delete row from stu table
"""
cursor = connection.cursor()
query = """DELETE FROM stu WHERE id = %s"""
values = (stu.id,)
cursor.execute(query, values)
connection.commit()
print(f"{cursor.rowcount} record(s) deleted")
最后,关闭数据库连接:
cursor.close()
connection.close()
print("MySQL connection is closed")
三、一些示例
示例一:插入一条数据
stu = Stu(name="Alice", age=18)
insert_stu(stu)
示例二:查询一条数据
stu = Stu(id=1)
select_stu_by_id(stu)
以上就是实现 Python 简易 ORM 模型的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何使用Python实现一个简易的ORM模型 - Python技术站