SQLAlchemy - 关闭连接一次后无法编辑表

问题描述 投票:0回答:1

我是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)

知道我需要做什么才能再次访问表格吗?

python sqlite sqlalchemy database-connection
1个回答
0
投票

找到了将来可能会问同样问题的其他人的缺失线!

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

一切正常!

© www.soinside.com 2019 - 2024. All rights reserved.