WEB开发网
开发学院软件开发Python SQLAlchemy指南 阅读

SQLAlchemy指南

 2008-11-10 13:25:13 来源:WEB开发网   
核心提示: 4.5 操作记录你可以看到,当我们打印记录时返回的可执行对象,SQLAlchemy指南(6),它以元组打印记录,这些记录实际上同时支持列表(list)和字典(dict)接口,引用的表必须已经存在于相同的MetaData对象中,当然,字典接口允许通过字符串的列名定位字段,或者通过Column

4.5 操作记录

你可以看到,当我们打印记录时返回的可执行对象,它以元组打印记录。这些记录实际上同时支持列表(list)和字典(dict)接口。字典接口允许通过字符串的列名定位字段,或者通过Column对象:

>>> row.keys()
['user_id','user_name','password']
>>> row['user_id'],row[1],row[users_table.c.password]
(4,u'Harry',None)

通过Column对象来定位是很方便的,因为这样避免了使用列名的方式。

结果集也是支持序列操作的。但是相对于select还有微小的差别,就是允许指定所选的列:

>>> for row in select([user_table.c.user_id,users_table.c.user_name]).execute():
...   print row
SELECT users.user_id,users.user_name
FROM users
[]
(1,u'Mary')
... ...
4.6 表间关系

我们可以创建第二个表格,email_addresses,这会引用users表。定义表间的关联,使用ForeignKey构造。我们将来也会考虑使用表格的CREATE语句:

>>> email_addresses_table=Table('email_addresses',metadata,
...   Column('address_id',Integer,primary_key=True),
...   Column('email_address',String(100),nullable=False),
...   Column('user_id',Integer,ForeignKey('users.user_id')))
>>> email_addresses_table.create()
CREATE TABLE email_addresses (
  address_id INTEGER NOT NULL,
  email_address VARCHAR(100) NOT NULL,
  user_id INTEGER,
  PRIMARY KEY (address_id),
  FOREIGN KEY(user_id) REFERENCES users (user_id)
)
...

上面的email_addresses表与表users通过ForeignKey(’users.user_id’)相联系。ForeignKey的构造器需要一个Column对象,或一个字符串代表表明和列名。当使用了字符串参数时,引用的表必须已经存在于相同的MetaData对象中,当然,可以是另外一个表。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:SQLAlchemy 指南

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接