python sqlite进行ORM

简介: python sqlite进行ORM

python sqlite进行ORM

首先,请确保您已经安装了Python和SQLite。然后安装Python的SQLite扩展模块:

pip install pysqlite3

接下来,创建一个Python文件并导入需要的库:

import sqlite3
from sqlite3 import Error

定义一个函数,用于连接到SQLite数据库。如果数据库不存在,则创建一个新数据库。在这个函数中,还可以执行一些初始SQL语句以创建数据表:

def create_connection():
    conn = None;
    try:
        conn = sqlite3.connect('example.db')
        print(sqlite3.version)
    except Error as e:
        print(e)
    finally:
        if conn:
            # create a users table
            create_users_table(conn)
            # create an orders table
            create_orders_table(conn)
            # close the database connection
            conn.close()

现在我们需要创建一些函数,来执行SQL语句创建数据表:

def create_users_table(conn):
    try:
        cursor = conn.cursor()
        sql = '''CREATE TABLE IF NOT EXISTS users (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            username TEXT NOT NULL,
            email TEXT NOT NULL,
            password TEXT NOT NULL
        );'''
        cursor.execute(sql)
    except Error as e:
        print(e)
def create_orders_table(conn):
    try:
        cursor = conn.cursor()
        sql = '''CREATE TABLE IF NOT EXISTS orders (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            user_id INTEGER,
            product_name TEXT,
            price REAL,
            FOREIGN KEY (user_id) REFERENCES users (id)
        );'''
        cursor.execute(sql)
    except Error as e:
        print(e)

现在我们可以定义一个ORM模型来映射数据表和Python中的对象:

class User:
    def __init__(self, username, email, password):
        self.username = username
        self.email = email
        self.password = password
    def __str__(self):
        return f'{self.username}, {self.email}, {self.password}'

我们还可以为每个对象添加一些方法,例如保存(insert)和查找(select):

class User:
    def __init__(self, username, email, password):
        self.username = username
        self.email = email
        self.password = password
    def __str__(self):
        return f'{self.username}, {self.email}, {self.password}'
    def save(self):
        try:
            conn = sqlite3.connect('example.db')
            cursor = conn.cursor()
            sql = '''INSERT INTO users (username, email, password)
                    VALUES (?, ?, ?)'''
            cursor.execute(sql, (self.username, self.email, self.password))
            conn.commit()
            print(f'User {self.username} saved successfully.')
        except Error as e:
            print(e)
        finally:
            if conn:
                conn.close()
    @staticmethod
    def select_all():
        try:
            conn = sqlite3.connect('example.db')
            cursor = conn.cursor()
            sql = '''SELECT * FROM users'''
            cursor.execute(sql)
            rows = cursor.fetchall()
            for row in rows:
                print(row)
        except Error as e:
            print(e)
        finally:
            if conn:
                conn.close()

现在,我们可以使用这些对象和方法来操作数据库:

# create a new user object
user = User('john', 'john@example.com', 'password123')
# save the user to the database
user.save()
# select all users from the database
User.select_all()

这就是一个简单的Python和SQLite进行ORM的示例代码。

相关文章
|
5月前
|
Linux 数据库管理 Python
CentOS7编译安装Python3.10(含OpenSSL1.1.1安装),创建虚拟环境,运行Django项目(含sqlite版本报错)
CentOS7编译安装Python3.10(含OpenSSL1.1.1安装),创建虚拟环境,运行Django项目(含sqlite版本报错)
754 4
|
20天前
|
Web App开发 SQL 数据库
使用 Python 解析火狐浏览器的 SQLite3 数据库
本文介绍如何使用 Python 解析火狐浏览器的 SQLite3 数据库,包括书签、历史记录和下载记录等。通过安装 Python 和 SQLite3,定位火狐数据库文件路径,编写 Python 脚本连接数据库并执行 SQL 查询,最终输出最近访问的网站历史记录。
|
27天前
|
SQL 关系型数据库 数据库
优化Web开发流程:Python ORM的优势与实现细节
【10月更文挑战第4天】在Web开发中,数据库操作至关重要,但直接编写SQL语句既繁琐又易错。对象关系映射(ORM)技术应运而生,让开发者以面向对象的方式操作数据库,显著提升了开发效率和代码可维护性。本文探讨Python ORM的优势及其实现细节,并通过Django ORM的示例展示其应用。ORM提供高级抽象层,简化数据库操作,提高代码可读性,并支持多种数据库后端,防止SQL注入。Django内置强大的ORM系统,通过定义模型、生成数据库表、插入和查询数据等步骤,展示了如何利用ORM简化复杂的数据库操作。
57 6
|
28天前
|
存储 关系型数据库 数据库
轻量级数据库的利器:Python 及其内置 SQLite 简介
轻量级数据库的利器:Python 及其内置 SQLite 简介
|
2月前
|
SQL 缓存 数据库
构建高效Web应用:掌握Python中的ORM映射技术
在Web开发中,数据库操作至关重要,但直接编写SQL语句会增加代码复杂度并降低效率。对象关系映射(ORM)技术通过将对象模型映射为数据库表,使开发者能以面向对象的方式处理数据,提升开发效率和代码可维护性。本文以Python和SQLAlchemy为例,介绍ORM的基本概念、安装方法及使用技巧,并展示其在提升Web应用性能方面的优势。通过ORM,开发者可以简化数据库操作,专注于业务逻辑实现,提高开发效率和代码质量。
48 1
|
2月前
|
SQL 数据库连接 数据库
30天拿下Python之sqlite3模块
30天拿下Python之sqlite3模块
15 0
|
2月前
|
JSON NoSQL 数据库
和SQLite数据库对应的NoSQL数据库:TinyDB的详细使用(python3经典编程案例)
该文章详细介绍了TinyDB这一轻量级NoSQL数据库的使用方法,包括如何在Python3环境中安装、创建数据库、插入数据、查询、更新以及删除记录等操作,并提供了多个编程案例。
89 0
|
4月前
|
SQL 关系型数据库 数据库
优化Web开发流程:Python ORM的优势与实现细节
【7月更文挑战第20天】Python ORM,如Django ORM,提升Web开发效率,通过面向对象接口抽象数据库操作,简化SQL,增强代码可读性,并确保安全。Django中,定义Model对应数据库表,使用`makemigrations`和`migrate`创建表,实例化Model并调用`save()`保存数据,`objects.all()`和`filter()`查询数据,更新和删除数据涉及字段修改和调用`save()`或直接`delete()`。ORM提供数据库无关性,防止SQL注入,是现代Web开发的强大工具。
42 1
|
4月前
|
前端开发 数据库 开发者
构建可维护的Web应用:Python模板引擎与ORM的协同工作
【7月更文挑战第19天】在Web开发中,可维护性至关重要。Python搭配Flask或Django框架,利用模板引擎(如Jinja2)和ORM(如SQLAlchemy或Django ORM)增强开发效率和代码质量。模板引擎桥接前后端,ORM简化数据库操作,两者协同提升可读性和可测试性。例如,Flask用Jinja2渲染动态HTML,Django通过ORM处理数据库模型。这种分离关注点的方法降低了耦合,增强了应用的可维护性。
43 1
|
4月前
|
SQL 缓存 数据库
构建高效Web应用:掌握Python中的ORM映射技术
【7月更文挑战第21天】在Web开发中,数据库操作常需直接写SQL,增加复杂度与风险。ORM技术,如SQLAlchemy,通过对象关系映射简化此流程,提升效率与安全性。安装SQLAlchemy仅需`pip install sqlalchemy`,使用时定义模型映射至数据库表,通过会话对象管理事务。ORM特性如缓存、延迟加载及批量操作显著优化Web性能,减少数据库负担。掌握SQLAlchemy,开发者可聚焦业务逻辑,提升应用效能与代码质量。
46 0