sqlAlchemy学习手册(二)简单教程①

本文详细介绍了使用SQLAlchemy实现对象关系映射(ORM)的基本步骤,包括版本检验、数据库连接、声明映射、创建映射类实例等核心内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面根据文档中的基于对象的教程(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 Sequence
Column(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'






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值