这是我目前的目录:
我使用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()
[]