Python 3.x之数据库框架Sqlalchemy操作SQlite(续)

来源:互联网 发布:mac百度云盘同步版 编辑:程序博客网 时间:2024/06/05 02:38

接着前面讲解的Sqlalchemy框架。再举个例子。如下所示:

这个例子是参考别人的Code的。

__author__ = 'minggxu9'import sqlalchemyfrom sqlalchemy import create_engineeng=create_engine('sqlite:///:memory:',echo=True)eng.execute("select 1").scalar()from sqlalchemy.ext.declarative import declarative_baseBase=declarative_base()#########################################################from sqlalchemy import join,Table,MetaData,\select,func,\and_,\Column,ForeignKey,\Integer,String,Text,Binaryfrom sqlalchemy.orm import deferred,mapper,\relationship,column_property,\object_session,\validates#########################################################metadata=MetaData()#########################################################class Book(Base):    __tablename__='book'    book_id=Column(Integer,primary_key=True)    title=Column(String(200),nullable=False)    summary=Column(String(2000))    excerpt=deferred(Column(Text))    photo1=deferred(Column(Binary),group='photos')    photo2=deferred(Column(Binary),group='photos')    photo3=deferred(Column(Binary),group='photos')class Address(Base):    __tablename__='address'    id=Column(Integer,primary_key=True)    user_id=Column(Integer,ForeignKey('user.id'))class User(Base):    __tablename__='user'    id=Column(Integer,primary_key=True)    firstname=Column(String(50))    lastname=Column(String(50))    #fullname=column_property(firstname+' '+lastname)    #address_count = column_property(    #    select([func.count(Address.id)]).\    #        where(Address.user_id==id)    #)    addresses=relationship("Address")    @validates('addresses')    def validate_address(self,key,address):        assert '@' in address.email        return address    @property    def fullname(self):        return self.firstname+' '+self.lastname    @property    def address_count(self):        return object_session(self).\            scalar(select([func.count(Address.id)]).\            where(Address.user_id==self.id))#########################################################Base.metadata.create_all(eng)#ed1_user=User('ed1','Ed1 Jones','ed1spassword')#ed2_user=User('ed2','Ed2 Jones','ed2spassword')#print("-----------------------")#from sqlalchemy.orm import Session#ses=Session(bind=eng)#ses.add(ed1_user)#ses.add(ed2_user)#ses.commit()

(完)

原创粉丝点击