歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Python 3.x之數據庫框架Sqlalchemy操作SQlite

目前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()  
Copyright © Linux教程網 All Rights Reserved