sqlAlchemy学习手册(二)简单教程①
来源:互联网 发布:用php编辑九九乘法表 编辑:程序博客网 时间:2024/05/16 06:17
下面根据文档中的基于对象的教程(Object Relational Tutorial)进行学习。
(1)版本检验(我这里使用的是Python 2.7.5)
<pre name="code" class="python">
<span style="font-size:18px;">>>> import sqlalchemy>>> sqlalchemy.__version__</span>
<span style="font-size:18px;">'1.0.4'</span>
(2)连接
这里我们使用的是内嵌数据库SQLite,通过create_engine()来进行连接。
>>> from sqlalchemy import create_engine>>> enginge = create_engine('sqlite:///:memory:', echo=True)其中通过设置echo来启动sqlalchemy的日志记录,而sqlalchemy的日志记录是基于Python自带的标准logging模块完成的。通过设置echo为True,可以看到所有的操作过程产生的SQL。
create_engine()返回的是一个Engine的实例,它代表了数据库的核心接口,并且对不同的数据库厂商语言进行差异化处理。
(3)声明映射
在ORM中,一般是先讨论所需要的表,然后再定义类来跟表进行映射,而在sqlAlchemy中,这两项任务是同时完成的,即在创建类的同时,对将要进行映射的数据库表进行描述。
>>> from sqlalchemy.ext.declarative import declarative_base>>> Base = declarative_base()
在Base的基础上,我们就可以进行新类的创建了。
>>> 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)__repr__()函数是为了让实例输出时更加标准化和美观一些,并不是必须的。
通过输入 User.__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)
在这里观察可以发现,在创建表时,VARCHAR列没有设置长度,这在SQLite和Postgresql中是被允许的,涉及其他数据库时,请事先声明长度,类似Column(String(30))。如需要设定Sequence(Oracle和Firebird),需要如下设定。
from sqlalchemy import SequenceColumn(Integer, Sequence('user_id_seq'), primary_key=True)(4)创建映射类的实例
当完成映射后,尝试创建映射类的实例。
>>> ed_user = User(name='ed', fullname='Ed Jones', password='edspassword')>>> ed_user.name'ed'>>> ed_user.password'edspassword'>>> str(ed_user.id)'None'
0 0
- sqlAlchemy学习手册(二)简单教程①
- SQLAlchemy 学习(二)
- sqlAlchemy学习手册(一):sqlAlchemy的安装
- sqlalchemy学习教程
- sqlalchemy 学习(二)scoped session
- Flask系列教程(二)--------------使用SQLAlchemy创建数据模型
- sqlalchemy整理(二)
- flask sqlalchemy(二)
- sqlalchemy笔记(二)初识sqlalchemy
- python学习教程(七)sqlalchemy框架的配置
- python学习教程(八)sqlalchemy的classic映射
- python学习教程(九)sqlalchemy框架的modern映射
- SQLAlchemy ORM教程之二:Query
- SQLAlchemy ORM教程之二:Query
- SQLAlchemy 学习(一)
- SQLAlchemy 学习(三)
- SQLAlchemy (二)---创建映射
- sqlalchemy基本操作(二)
- osg自定义操作器实现视图缩放
- 【单调队列】【cogs825】【RQNOJ 167】免费午餐
- 单例模式的最佳实现
- 创建此博客的缘由
- ios开发中常用的英文单词
- sqlAlchemy学习手册(二)简单教程①
- Leetcode33: Excel Sheet Column Title
- POJ 1953 World Cup Noise
- 提高第36课时,实践3,项目3-各种“棋盘”
- Tomcat8+redis做session同步
- JavaWeb系列之二 (JavaScript的简介及其应用)
- android 动画分类
- python使用ftplib模块实现ftp目录嵌套下载
- 泊松分酒