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

简介:

知乎: 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()
复制代码

 

本文转自罗兵博客园博客,原文链接:http://www.cnblogs.com/hhh5460/p/5514459.html ,如需转载请自行联系原作者
相关文章
|
存储 数据库 容器
110.[HarmonyOS NEXT 实战案例:文件管理器] 基础篇 - 垂直分割布局构建文件管理界面
文件管理器是操作系统中不可或缺的应用,它允许用户浏览、组织和管理文件系统中的文件和文件夹。一个设计良好的文件管理器应该提供清晰的导航结构和直观的文件操作界面。本教程将详细讲解如何使用HarmonyOS NEXT的`ColumnSplit`组件构建一个文件管理器界面,通过垂直分割布局将界面分为侧边栏和主内容区两个主要部分。
471 47
|
Docker 容器
paddleocr 在docker环境下部署_docker部署paddleocr,90%的人看完都说好
paddleocr 在docker环境下部署_docker部署paddleocr,90%的人看完都说好
|
安全 搜索推荐 数据安全/隐私保护
战斧指纹浏览器与IPXProxy海外代理IP的协同使用策略
战斧指纹浏览器是一家专注跨境用户的指纹浏览器,支持IP隔离技术,能够解决账号关联的问题。当然,用户在使用战斧浏览器的时候也可以搭配自有设备,其中IPXProxy的海外代理IP是不错的选择。那战斧指纹浏览器与IPXProxy海外代理IP如何搭配使用?
1109 2
|
关系型数据库 PostgreSQL RDS
阿里云产品十月刊来啦
阿里云RDS PostgreSQL已支持PostgreSQL 17.0 大版本,通义灵码知识库问答功能增强,多款产品能力新升级,详情请点击阿里云产品十月刊
298 0
阿里云产品十月刊来啦
设备端OTA升级的https实现
OTA(Over-the-Air Technology)即空中下载技术。物联网平台支持通过OTA方式进行设备升级。
851 0
设备端OTA升级的https实现
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的学术团队管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的学术团队管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
488 4
|
存储 Python
python实现图书管理系统(超详细)
python实现图书管理系统 图书管理系统 python实现图书管理系统 图书管理系统: 图书的功能: 现在开始添加数据: 增加数据 删除数据 查询数据 图书位置修改 图书的借出 图书的还回 主体界面 完整代码 功能运行截图
2537 0
python实现图书管理系统(超详细)
|
API 定位技术 数据安全/隐私保护
autojs之权限
使用场景 申请各种权限, 以及一些坑
2489 0
autojs之权限
基于QT的串口调试助手
基于QT的串口调试助手
686 0
基于QT的串口调试助手