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

SQLAlchemy指南

 2008-11-10 13:25:13 来源:WEB开发网   
核心提示: >>> metadata.engine.echo=True>>> users_table.create()CREATE TABLE users (user_id INTEGER NOT NULL,user_name VARCHAR(40),passwor

>>> metadata.engine.echo=True
>>> users_table.create()
CREATE TABLE users (
  user_id INTEGER NOT NULL,
  user_name VARCHAR(40),
  password VARCHAR(10),
  PRIMARY KEY (user_id)
)
...

或者,如果users表格已经存在了(比如你第二次运行这些例子),在这种情况下你可以跳过create()方法的调用。你设置可以跳过列定义,而是让SQLAlchemy自动从数据库装入定义:

>>> users_table=Table('users',metadata,autoload=True)
>>> list(users_table.columns)[0].name
'user_id'

关于表格元信息的文档在”Database Meda Data”中。

4.3 插入记录

插入记录是通过表格对象的insert()方法实现的,这将会定义一个子句对象(clause object)(就是CluseElement)来代理INSERT语句:

>>> i=users_table.insert()
>>> i
<sqlalchemy.sql._Insert object at 0x...>
>>> print i
INSERT INTO users (user_id,user_name,password) VALUES (?,?,?)

当我们创建这个插入语句对象时,语句本身也绑定到了Engine,并已经可以执行了。子句对象的execute()方法将会将对象编译为特定引擎的SQL方言,并且执行语句:

>>> i.execute(user_name='Mary',password='secure')
INSERT INTO users (user_name,password) VALUES (?,?)
['Mary','secure']
COMMIT
<sqlalchemy.engine.base.ResultProxy object at 0x...>
>>> i.execute({'user_name':'Tom'},{'user_name':'Fred'},{'user_name':'Harry'})
INSERT INTO users (user_name) VALUES (?)
[['Tom'],['Fred'],['Harry']]
COMMIT
<sqlalchemy.engine.base.ResultProxy object at 0x...>

注意VALUES子句会自动调整参数数量。这是因为ClauseElement的编译步骤并不依赖于特定的数据库,执行的参数也是如此。

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

Tags:SQLAlchemy 指南

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