Welcome 微信登录

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

接着前面讲解的Sqlalchemy框架。再举个例子。相关阅读: Python 3.x之数据库框架Sqlalchemy操作SQlite http://www.linuxidc.com/Linux/2011-12/48863.htm如下所示:这个例子是参考别人的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()  
在Python 2.7平台下访问MySQL 5.0数据库使用Python 2.7 CURD 操作非关系型数据库MongoDB相关资讯      python 
  • Python 为什么要迁移到 Github  (01月26日)
  • Python 程序员最常犯的十个错误  (12/11/2015 18:32:46)
  • Python 面向对象编程  (10/06/2015 21:19:35)
  • Python 决定迁移到 GitHub  (01月03日)
  • Python面试必须要看的15个问题  (11/26/2015 22:23:21)
  • Python 开发者节省时间的 10 个方  (10/04/2015 06:58:39)
本文评论 查看全部评论 (0)
表情: 姓名: 字数