SQLAlchemy数据库操作例子


#建表
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()


参考资料:[url]http://www.sqlalchemy.org/docs/core/tutorial.html[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值