sqlalchemy 的 ORM 与 Core 混合方式使用示例

简介: 知乎: sqlalchemy 的 ORM 与 Core 混合方式操作数据库是一种怎样的体验? 答: 酸!   本文基于:win 10 + python 3.4 + sqlalchemy 1.0.13   基本步骤如下:   1.

知乎: sqlalchemy 的 ORM 与 Core 混合方式操作数据库是一种怎样的体验?

答: 酸!

 

本文基于:win 10 + python 3.4 + sqlalchemy 1.0.13

 

基本步骤如下:

 

1. 绑定数据库

from sqlalchemy import create_engine

engine = create_engine('sqlite:///:memory:',echo = True)

 

2. 建立会话

from sqlalchemy.orm import Session
session
= Session(engine)

 

3. 元数据

from sqlalchemy import MetaData

metadata = MetaData(engine)

 

4. 定义表

from sqlalchemy import Table, Column, Integer, String, ForeignKey

users_table = Table('users', metadata,
  Column('id', Integer, primary_key = True),
  Column('name', String),
  Column('fullname', String),
  Column('password', String)
)

 

5. 创建表

# metadata.create_all() # 方式一
users_table.create() # 方式二

 

6. 定义类

class User(object):
    def __init__(self,name,fullname,password):
        self.name = name
        self.fullname = fullname
        self.password = password

    def __repr__(self):
        return "<User('%s','%s','%s')>" % (self.name, self.fullname, self.password)

 

7. 映射类、表

from sqlalchemy.orm import mapper

mapper(User, users_table)

 

8. 然后,就可以使用会话对数据库进行操作

session.add(User('ed','Ed Jones','edspassword'))
session.commit()

 

9. 完整代码

# 绑定数据库
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:',echo = True)


# 建立会话
from sqlalchemy.orm import Session
session = Session(engine)


# 元数据
from sqlalchemy import MetaData
metadata = MetaData(engine)


# 定义表
from sqlalchemy import Table, Column, Integer, String, ForeignKey
users_table = Table('users', metadata,
  Column('id', Integer, primary_key = True),
  Column('name', String),
  Column('fullname', String),
  Column('password', String)
)


# 创建表
# metadata.create_all() # 方式一
users_table.create() # 方式二


# 定义类
class User(object):
    def __init__(self,name,fullname,password):
        self.name = name
        self.fullname = fullname
        self.password = password

    def __repr__(self):
        return "<User('%s','%s','%s')>" % (self.name, self.fullname, self.password)

        
# 映射类、表
from sqlalchemy.orm import mapper
mapper(User, users_table)


# 然后,就可以使用会话对数据库进行操作
session.add(User('ed','Ed Jones','edspassword'))
session.commit()

 

目录
相关文章
|
7月前
|
SQL 关系型数据库 MySQL
ORM基础
ORM是对象关系映射,简化数据库与数据模型的绑定,允许模型设计独立于特定数据库。在Django中使用ORM,包括三步:1) 定义模型类,如`User`,包含字段;2) 配置数据库连接,如sqlite3或mysql;3) 使用`makemigrations`和`migrate`命令创建数据库表。若需查看ORM转换的SQL,可配置日志设置。此外,可为每个应用单独配置数据库,并用`migrate --database`进行特定数据库的迁移。
|
4月前
|
SQL 开发框架 .NET
深入解析Entity Framework Core中的自定义SQL查询与Raw SQL技巧:从基础到高级应用的全面指南,附带示例代码与最佳实践建议
【8月更文挑战第31天】本文详细介绍了如何在 Entity Framework Core (EF Core) 中使用自定义 SQL 查询与 Raw SQL。首先,通过创建基于 EF Core 的项目并配置数据库上下文,定义领域模型。然后,使用 `FromSqlRaw` 和 `FromSqlInterpolated` 方法执行自定义 SQL 查询。此外,还展示了如何使用 Raw SQL 进行数据更新和删除操作。最后,通过结合 LINQ 和 Raw SQL 构建动态 SQL 语句,处理复杂查询场景。本文提供了具体代码示例,帮助读者理解和应用这些技术,提升数据访问层的效率和灵活性。
231 0
|
SQL Java 关系型数据库
Go的ORM也太拉跨了吧,赶紧给他封装一下
去年慢慢开始接触了Go语言,也在公司写了几个Go的生产项目。我是从Java转过来的。(其实也不算转,公司用啥,我用啥)在这个过程中,老是想用Java的思维写Go,在开始的一两个月,那是边写边吐槽。
335 0
|
算法 数据安全/隐私保护
ORM映射框架总结--加密处理
1.MD5 加密处理 代码  1 /** 2  * 日期:2009-3-15 3  * 作者: 4  * 功能:MD5加密及验证 5  * */ 6 using System; 7 using System.
830 0
|
JSON 数据格式
ORM映射框架总结--终极JSON
1. 简单介绍一下JSON   JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript的一个子集。
1049 0
|
Web App开发
ORM映射框架总结--Excel 操作
  在很多时候,我们需要将查询的数据做成报表统计,然后生成Excel文档格式的。再此提供了将DataTable 数据导出excel 的方法   代码   1 /**  2  *   3  * 2009-5-2  4  *   5  *   6  * 将DataTable导出为excel文件  7  * */  8 using System;  9 using System.
907 0
|
SQL 存储 .NET
ORM映射框架总结--数据库操作库(精修版)
1.       ORM数据库操作原理 前面已经介绍过了个人ORM映射框架中的三个核心库: 实体—数据库 映射特性关系: http://www.cnblogs.com/qingyuan/archive/2010/04/02/1702998.
1397 0
|
SQL 存储 数据库
ORM映射框架总结--数据操作(六)
1. 数据库操作接口 IDbHelper 代码 /** *  * 2009-4-22 *  *  * 提供各种数据库操作方法以及实体类操作方法 * */using System;using System.
653 0
|
SQL
ORM映射框架总结--数据操作(四)
1.BaseEntityHelper 解析实体类特性 代码   1 /**  2  *   3  * 2009-4-17  4  *   5  *   6  * 字段的特性  7  * */  8 using System;  9 using System.
787 0
|
数据库连接 数据库
ORM映射框架总结--数据操作(五)
1.数据库加载驱动和操作接口 IDbProvider 代码  1 /** 2  *  3  * 2009-4-22 4  *  5  *  6  * 数据库操作加载驱动接口,  7  * 提供了数据库操作的各种命令  8  * */ 9 using System;10 using System.
799 0