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

时间:2018-09-06 15:50:23

标签: python sqlite sqlalchemy database-connection

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

关于我需要做什么才能再次访问该表?

1 个答案:

答案 0 :(得分: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

一切正常!