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

AngleKill 2011-12-07

目前Python 3.x的操作数据库框架比较少,其中Sqlalchemy是一比较优秀的ORM数据持久化操作框架,

它的下载地址为:

http://www.sqlalchemy.org/download.html

目前最新版本为:0.7.3

它不太支持python 3.x,当安装的时候,即使用python setup.py install.会出现

SQLAlchemy includes C extensions which provide an extra speed boost for dealing with result sets. Currently, the

extensions are only supported on the 2.xx series of cPython, not Python 3 or Pypy.

它只是一个警告,并不影响使用,因为它有个2to3.py程序,当版本为python 3.x的时候,它会自动调用的。

安装好以后:

我写了两个测试例子进行测试:

other.py:

  1. from sqlalchemy import create_engine  
  2. engine=create_engine('sqlite:///:memory:',echo=True)  
  3.   
  4. from sqlalchemy import Table,Column,Integer,String,MetaData,ForeignKey  
  5. metadata=MetaData()  
  6.   
  7. users_table=Table('users',metadata,  
  8.   Column('id',Integer,primary_key=True),  
  9.   Column('name',String),  
  10.   Column('fullname',String),  
  11.     Column('password',String)  
  12. )  
  13.   
  14. metadata.create_all(engine)  
  15.   
  16. class User(object):  
  17.     def __init__(self,name,fullname,password):  
  18.         self.name=name  
  19.         self.fullname=fullname  
  20.         self.password=password  
  21.     def __repr__(self):  
  22.         return "<User('%s','%s','%s')>" % (self.name,self.fullname,self.password)  
  23.   
  24.   
  25. from sqlalchemy.orm import (mapper, relationship, sessionmaker)  
  26. #print(User.__table__)   
  27. #print(User.__mapper__)   
  28.   
  29. mapper(User,users_table)  
  30.   
  31. ed_user=User('ed','Ed Jones','edspassword')  
  32. ed_user.password = 'f8s7ccs'  
  33. print(ed_user.fullname)  
  34. print(ed_user.password)  

还有一个例子为:

  1. __author__ = 'minggxu9'  
  2. from sqlalchemy import Table,Column,Integer,String,MetaData,ForeignKey  
  3. from sqlalchemy.ext.declarative import declarative_base  
  4.   
  5. Base=declarative_base()   #基类   
  6. class User(Base):  
  7.     __tablename__='users'   #表名   
  8.   
  9.     id=Column(Integer,primary_key=True)  
  10.     name=Column(String)  
  11.     fullname=Column(String)  
  12.     password=Column(String)  
  13.     def __init__(self,name,fullname,password):  
  14.         self.name=name  
  15.         self.fullname=fullname  
  16.         self.password=password  
  17.     def __repr__(self):  
  18.         return "<User('%s','%s','%s')>" % (self.name,self.fullname,self.password)  
  19. users_table=User.__table__  #用来获得Table   
  20. metadata=Base.metadata  #获得MetaDATA   
  21.   
  22. #创建Session并绑定一个数据库链接   
  23. from sqlalchemy.orm import sessionmaker  
  24. from sqlalchemy import engine  
  25. Session=sessionmaker(bind=engine)  
  26.   
  27. #如果没有数据库链接,可以这样创建session   
  28. Session=sessionmaker()  
  29.   
  30. #当后来由数据库链接后可以这样绑定   
  31. Session.configure(bind=engine)  
  32.   
  33.   
  34. ed_user = User('ed''Ed Jones''edspassword')  
  35. session = Session()  
  36. session.add(ed_user)  
  37. #通过session的add方法添加一个对象   
  38.   
  39.   
  40. from sqlalchemy import *  
  41.   
  42. #our_user = session.query(User).filter_by(name='ed').first()   
  43. #print(ed_user is our_user )   
  44.   
  45. session.add_all([  
  46.  User('wendy''Wendy Williams','foobar'),  
  47.  User('mary''Mary Contrary''xxg527'),  
  48. User('fred''Fred Flinstone','blah')])  
  49.   
  50. session.dirty  
  51. session.new  
  52.   
  53. session.commit()  

相关推荐