Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python数据结构--我是否需要使用SQL插件。。。如果是,怎么做?_Python_Sql_Database - Fatal编程技术网

Python数据结构--我是否需要使用SQL插件。。。如果是,怎么做?

Python数据结构--我是否需要使用SQL插件。。。如果是,怎么做?,python,sql,database,Python,Sql,Database,我有以下具有关联属性的类: 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 entr

我有以下具有关联属性的类:

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)
我希望能够轻松执行诸如companys.find(creator=“someguy”)之类的查询,并让类返回someguy创建的所有公司的列表。我还希望能够运行诸如companys.find(creation_date>x)之类的查询,并返回在某个日期之后创建的所有条目的列表

我有一点使用Django的内置SQL功能进行类似工作的经验,并发现这非常方便。然而,这个项目没有使用Django,我不知道是否有其他更小的包提供这个功能。我希望尽量减少与SQL server的接口,因为我对该语言没有太多经验

以下是我的问题:
  • 要执行上述操作,是否需要使用外部数据库程序?或者,是否有一个包可以实现上述功能,并允许我轻松保存数据(酸洗或其他)?我觉得,当您开始合并SQL时,事情开始变得更加混乱和复杂,这也许是不合理的
  • 如果上述操作不需要数据库,那么当您有足够的数据需要合并外部数据库时,您将如何评估
  • 有哪些包(例如Django)可以最大限度地减少SQL的工作量
  • 话虽如此,你建议我做什么

  • SQLAlchemy是一个功能齐全的Python ORM(对象关系映射器)。可在以下网址找到

    定义新对象的示例用法:

    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'
    
    要写入数据库(创建新会话后):

    以及查询:

    our_user = session.query(User).filter_by(name='ed').first() 
    >>> our_user
    <User('ed','Ed Jones', 'edspassword')>
    
    our_user=session.query(user).filter_by(name='ed').first()
    >>>我们的用户
    

    更多详细信息请访问(摘自文档)。

    有关ORM,请查看SqlAlchemy或Pony。
    our_user = session.query(User).filter_by(name='ed').first() 
    >>> our_user
    <User('ed','Ed Jones', 'edspassword')>