我有以下具有关联属性的类:
class Company(object):
self.ticker # string
self.company # string
self.creator # string
self.link # string
self.prices # list of tuples (this could be many hundreds of entries long)
self.creation_date # date entry
我填写个别公司,然后将公司名单存储到公司类别中:
class Companies(object):
def __init__(self):
self.companies = []
def __len__(self):
return len(self.companies)
def __getitem__(self, key):
return self.companies[key]
def __repr__(self):
return 'Company list of length %i' % (self.__len__())
def add(self, company):
self.companies.append(company)
我希望能够轻松执行诸如Companies.find(creator =“someguy”)之类的查询,并让该类返回由someguy创建的所有公司的列表。我还希望能够运行诸如Companies.find(creation_date> x)之类的查询,并返回在特定日期之后创建的所有条目的列表。
我有一些使用Django的内置SQL功能进行类似工作的经验,并发现它非常方便。但是,这个项目没有使用Django,我不知道是否有任何其他更小的包提供此功能。我希望将与SQL服务器的接口保持在最低限度,因为我对该语言没有多少经验。
答案 0 :(得分:0)
SQLAlchemy是一个功能齐全的Python ORM(对象关系映射器)。它可以在http://www.sqlalchemy.org/找到。
定义新对象的示例用法:
from sqlalchemy import Column, Integer, String
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
fullname = Column(String)
password = Column(String)
def __init__(self, name, fullname, password):
self.name = name
self.fullname = fullname
self.password = password
创建新用户:
>>> ed_user = User('ed', 'Ed Jones', 'edspassword')
>>> ed_user.name
'ed'
>>> ed_user.password
'edspassword'
写入数据库(创建新会话后):
ed_user = User('ed', 'Ed Jones', 'edspassword')
session.add(ed_user)
session.commit()
并查询:
our_user = session.query(User).filter_by(name='ed').first()
>>> our_user
<User('ed','Ed Jones', 'edspassword')>
更多详细信息,请参阅http://docs.sqlalchemy.org/en/rel_0_8/orm/tutorial.html(摘自文档)。