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

mac2022-06-30  87

知乎: 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()

 

转载于:https://www.cnblogs.com/hhh5460/p/5514459.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)