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


接着前面讲解的Sqlalchemy框架。再举个例子。

相关阅读: Python 3.x之数据库框架Sqlalchemy操作SQlite

如下所示:

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

  1. __author__ = 'minggxu9'  
  2. import sqlalchemy  
  3. from sqlalchemy import create_engine  
  4. eng=create_engine('sqlite:///:memory:',echo=True)  
  5.   
  6. eng.execute("select 1").scalar()  
  7.   
  8. from sqlalchemy.ext.declarative import declarative_base  
  9. Base=declarative_base()  
  10.   
  11. #########################################################   
  12. from sqlalchemy import join,Table,MetaData,\  
  13. select,func,\  
  14. and_,\  
  15. Column,ForeignKey,\  
  16. Integer,String,Text,Binary  
  17.   
  18. from sqlalchemy.orm import deferred,mapper,\  
  19. relationship,column_property,\  
  20. object_session,\  
  21. validates  
  22.   
  23. #########################################################   
  24. metadata=MetaData()  
  25. #########################################################   
  26. class Book(Base):  
  27.     __tablename__='book'  
  28.     book_id=Column(Integer,primary_key=True)  
  29.     title=Column(String(200),nullable=False)  
  30.     summary=Column(String(2000))  
  31.     excerpt=deferred(Column(Text))  
  32.     photo1=deferred(Column(Binary),group='photos')  
  33.     photo2=deferred(Column(Binary),group='photos')  
  34.     photo3=deferred(Column(Binary),group='photos')  
  35.   
  36. class Address(Base):  
  37.     __tablename__='address'  
  38.     id=Column(Integer,primary_key=True)  
  39.     user_id=Column(Integer,ForeignKey('user.id'))  
  40.   
  41. class User(Base):  
  42.     __tablename__='user'  
  43.     id=Column(Integer,primary_key=True)  
  44.     firstname=Column(String(50))  
  45.     lastname=Column(String(50))  
  46.     #fullname=column_property(firstname+' '+lastname)   
  47.     #address_count = column_property(   
  48.     #    select([func.count(Address.id)]).\   
  49.     #        where(Address.user_id==id)   
  50.     #)   
  51.     addresses=relationship("Address")  
  52.  
  53.     @validates('addresses')  
  54.     def validate_address(self,key,address):  
  55.         assert '@' in address.email  
  56.         return address  
  57.  
  58.     @property  
  59.     def fullname(self):  
  60.         return self.firstname+' '+self.lastname  
  61.  
  62.     @property  
  63.     def address_count(self):  
  64.         return object_session(self).\  
  65.             scalar(select([func.count(Address.id)]).\  
  66.             where(Address.user_id==self.id))  
  67. #########################################################   
  68. Base.metadata.create_all(eng)  
  69.   
  70. #ed1_user=User('ed1','Ed1 Jones','ed1spassword')   
  71. #ed2_user=User('ed2','Ed2 Jones','ed2spassword')   
  72.   
  73. #print("-----------------------")   
  74.   
  75. #from sqlalchemy.orm import Session   
  76. #ses=Session(bind=eng)   
  77. #ses.add(ed1_user)   
  78. #ses.add(ed2_user)   
  79. #ses.commit()  

相关内容