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
原创粉丝点击