我无法从其他位置查询任何内容

时间:2018-06-18 08:52:51

标签: python sqlalchemy

这是我目前的目录:

enter image description here

我使用sqlachemy创建ORM,这是我的database_setup文件:

from sqlalchemy import Column, ForeignKey, Integer, String

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy.orm import relationship

from sqlalchemy import create_engine

Base = declarative_base()

class Restaurant(Base):
    __tablename__ = 'restaurant'

    id = Column(Integer, primary_key=True)
    name = Column(String(250), nullable=False)

class MenuItem(Base):
    __tablename__ = "menu_item"

    name =Column(String(80), nullable = False)
    id = Column(Integer, primary_key = True)
    description = Column(String(250))
    price = Column(String(8))
    course = Column(String(250))
    restaurant_id = Column(Integer, ForeignKey('restaurant.id'))
    restaurant = relationship(Restaurant)

    @property
    def serialize(self):
        return {
            'name': self.name,
            'description': self.description,
            'id': self.id,
            'price': self.price,
            'course': self.course
        }

engine = create_engine(
    'sqlite:///restaurantmenu.db')

Base.metadata.create_all(engine)

这是我的项目文件的顶部:

engine = create_engine('sqlite:///restaurantMenu.db')
DBSession = sessionmaker(bind = engine)
session = DBSession()

在我目前的目录中,' restaurantmenu.db'文件生命,我可以使用session.query()来查询Restaurant和MenuItem。而且,我得到了我想要的所有数据。它们不是空的。

>>> from database_setup import Restaurant, MenuItem
>>> from project import session
>>> session.query(Restaurant).all()
[<database_setup.Restaurant object at 0x7fc7bc2ce0d0>, <database_setup.Restaurant object at 0x7fc7bc2ce150>, <database_setup.Restaurant object at 0x7fc7bc2ce1d0>, <database_setup.Restaurant object at 0x7fc7bc2ce290>, <database_setup.Restaurant object at 0x7fc7bc2ce350>, <database_setup.Restaurant object at 0x7fc7bc2ce410>, <database_setup.Restaurant object at 0x7fc7bc2ce4d0>, <database_setup.Restaurant object at 0x7fc7bc2ce590>, <database_setup.Restaurant object at 0x7fc7bc2ce650>]
>>> session.query(MenuItem).all()
[<database_setup.MenuItem object at 0x7fc7bc2df150>, <database_setup.MenuItem object at 0x7fc7bc2df1d0>, <database_setup.MenuItem object at 0x7fc7bc2df250>, <database_setup.MenuItem object at 0x7fc7bc2df310>, 

但是当我想使用&#39; session.query()&#39;在另一个地方(不是我当前的目录),&#39; session.query(餐厅)&#39;没关系,但是&#39; session.query(MenuItem)&#39;是空的。我无法弄清楚原因。 是否有关于MenuItem的依赖?

>>> import sys
>>> sys.path.append('../restaurant')
>>> from database_setup import Restaurant, MenuItem
>>> from project import session
>>> session.query(Restaurant).all()
[<database_setup.Restaurant object at 0x7fd3e921ff50>, <database_setup.Restaurant object at 0x7fd3e921ffd0>, <database_setup.Restaurant object at 0x7fd3e9241090>, <database_setup.Restaurant object at 0x7fd3e9241150>, <database_setup.Restaurant object at 0x7fd3e9241210>, <database_setup.Restaurant object at 0x7fd3e92412d0>, <database_setup.Restaurant object at 0x7fd3e9241390>, <database_setup.Restaurant object at 0x7fd3e9241450>, <database_setup.Restaurant object at 0x7fd3e9241510>, <database_setup.Restaurant object at 0x7fd3e92415d0>, <database_setup.Restaurant object at 0x7fd3e9241690>, <database_setup.Restaurant object at 0x7fd3e9241750>]
>>> session.query(MenuItem).all()
[]

0 个答案:

没有答案