我是SQLAlchemy的新手。我使用Metadata()创建了一个基本表并关闭了连接。现在,即使我重新打开连接,我也似乎无法访问数据库。我似乎错过了一行代码,但无法弄清楚它是什么。
这是我尝试重新打开连接的方式:
engine = create_engine('sqlite:///C:\\Users\\..\\Documents\\Untitled Folder\\Database.db', echo= False)
metadata = MetaData()
conn = engine.connect()
trans = conn.begin()
trans
但是,每次我尝试选择或对数据库中包含的表执行某些操作时,都会出现以下错误:
>>>ins = tabledata.insert().values(fullname= 'Hello', year='2018')
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-3-a148c71d348c> in <module>()
----> 1 ins = tabledata.insert().values(fullname= 'Hello', year='2018')
NameError: name 'tabledata' is not defined
我知道该表存在并且尚未删除,因为我有一个浏览器,它让我看看数据库,它仍然存在。
作为参考,这是我在数据库中创建表的方式:一切正常,直到我关闭连接并尝试再次重新启动它。
metadata = MetaData()
tabledata = Table('tabledata', metadata,
Column('id', Integer, primary_key= True ),
Column('fullname', String),
Column('year', String),)
metadata.create_all(engine)
知道我需要做什么才能再次访问表格吗?
找到了将来可能会问同样问题的其他人的缺失线!
tabledata = Table('tabledata', metadata, autoload=True, autoload_with=engine)
所以重新加载表的完整方法是:
engine = create_engine('sqlite:///C:\\Users\\..\\Documents\\UntitledFolder\\Database.db', echo= False)
metadata = MetaData()
tabledata = Table('tabledata', metadata, autoload=True, autoload_with=engine)
conn = engine.connect()
conn
一切正常!