设为首页 加入收藏

TOP

SQLAlchemy数据库操作例子
2014-11-24 01:39:12 来源: 作者: 【 】 浏览:4
Tags:SQLAlchemy 数据库 操作 例子

Python代码
#建表
from sqlalchemy import create_engine,Table,Column,Integer,String,MetaData,ForeignKey
engine = create_engine('sqlite:///:memory:',echo=True)
metadata = MetaData()
users = Table('users',metadata,
Column('id',Integer,primary_key=True),
#SQLite和Postgresql允许不带长度,如果是其他数据库则应该为
#Column('name',String(50)),
Column('name',String),
Column('fullname',String),
)

address = Table('address',metadata,
Column('id',Integer,primary_key=True),
Column('user_id',None,ForeignKey('users.id')),
Column('email_address',String,nullable=False),
)
metadata.create_all(engine)

#插入
#coding:GBK
from connection import *

ins = users.insert().values(name='jack',fullname='jack Jones')
print str(ins)
print ins.compile().params

#Executing
conn = engine.connect()
print conn
result = conn.execute(ins)
print result.inserted_primary_key

#Executing Multipe Statements
ins = users.insert()
conn.execute(ins,id=2, name='wendy',fullname='Wendy Williams')

conn.execute(address.insert(),[
{'user_id':1,'email_address':'jack@yahoo.com'},
{'user_id':1,'email_address':'jack@msm.com'},
{'user_id':2,'email_address':'www@www.org'},
{'user_id':2,'email_address':'wendy@aol.com'},
])

#Bind Connection
metadata.bind = engine
result = users.insert().execute(name='mary',fullname='Mary contary')

#查询
from InsertExpressions import *
from sqlalchemy.sql import select,text
s = select([users])
result = conn.execute(s)
for row in result:
print row
result = conn.execute(s)
row = result.fetchone()
print row
print row['name'],row['fullname']

s = select([users.c.name, users.c.fullname])
result = conn.execute(s)
for row in result:
print row

for row in conn.execute(select([users, address])):
print row

s = select([users, address], users.c.id==address.c.user_id)
for row in conn.execute(s):
print row

s = text("""SELECT users.fullname || ', ' || address.email_address AS title
FROM users, address
WHERE users.id = address.user_id AND users.name BETWEEN :x AND :y AND
(address.email_address LIKE :e1 OR address.email_address LIKE :e2)
""")
print conn.execute(s,x='m', y='z', e1='%@aol.com', e2='%@msn.com').fetchall()

作者“ljdam”

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇SQL Server单个表的导出,导入 下一篇rman backup

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: