SQLAlchemy代码总结(1)

SQLAlchemy代码总结(1)

本文抽自官方文档,用来记忆,具体请看官方文档,因为这里只有代码,没有什么说明。

版本检查

>>> import sqlalchemy
>>> sqlalchemy.__version__
1.0.8

连接
engine在第一次使用时建立DBAPI与数据库的连接

>>> from sqlalchemy import create_engine
>>> engine = create_engine('sqlite:///:memory:', echo=True)

* 创建Declarative 用来描述表和类与表的关系*

>>> from sqlalchemy.ext.declarative import declarative_base
>>> Base = declarative_base()

创建映射类
至少需要__tablename__属性和一个是主键的列

>>> from sqlalchemy import Column, Integer, String
>>> class User(Base):
...     __tablename__ = 'users'
...
...     id = Column(Integer, primary_key=True)
...     name = Column(String)
...     fullname = Column(String)
...     password = Column(String)
...
...     def __repr__(self):
...        return "<User(name='%s', fullname='%s', password='%s')>" % (
...                             self.name, self.fullname, self.password)

创建模式

  • 查看table对象
>>> User.__table__ 
Table('users', MetaData(bind=None),
            Column('id', Integer(), table=<users>, primary_key=True, nullable=False),
            Column('name', String(), table=<users>),
            Column('fullname', String(), table=<users>),
            Column('password', String(), table=<users>), schema=None)
  • 使用MetaData来创建数据表
>>> Base.metadata.create_all(engine) 

创建映射类实例
SqlAlchemy会自动帮我们给没有赋值的属性赋值为None,虽然自动提供了下面的构造器,我们可以写自己的来覆盖默认的

>>> ed_user = User(name='ed', fullname='Ed Jones', password='edspassword')
>>> ed_user.name
'ed'
>>> ed_user.password
'edspassword'
>>> str(ed_user.id)
'None'

创建Session

  • 在当前有Engine对象时创建Session工厂
>>> from sqlalchemy.orm import sessionmaker
>>> Session = sessionmaker(bind=engine)
  • 在当前没有Engine对象时创建Session工厂
>>> Session = sessionmaker()
>>> Session.configure(bind=engine)  # once engine is available
  • 使用Session工厂创建Session
session = Session() #在第一次对session进行使用时才会进行连接。

添加新对象

  • 添加单个对象
>>> ed_user = User(name='ed', fullname='Ed Jones', password='edspassword')
#添加,这个操作是pendding的,会在需要的时候执行到数据库
>>> session.add(ed_user)

#查询操作flush之前的pendding,所以可以查到刚插入的结果
>>> our_user = session.query(User).filter_by(name='ed').first() 
>>> our_user
<User(name='ed', fullname='Ed Jon
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值