Python中文
首页
教程
问答
标签
搜索
登录
注册
如何直接访问SQLite数据库删除alembic_版本表?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在构建一个Flask web应用程序,在某个时候意外地删除了SQLite数据库的迁移文件。我在Flask中使用SQLAlchemy作为数据库命令,flaskalembic用于迁移。我试图删除“alembic_version”文件,该文件包含对丢失的迁移文件的引用,但无法执行此操作。在</p> <p>我不久前删除了迁移文件,但直到最近尝试对我的数据库运行迁移时才注意到:</p> <pre><code>$ flask db migrate </code></pre> <p>我收到了以下错误消息:</p> ^{pr2}$ <p>好的,我相信这意味着我删除了迁移文件,除了包含当前迁移版本的alembic_version表认为它仍然存在并试图引用它。我的想法是删除alembic_版本中的条目,然后重新初始化migrations文件夹并使用以下内容进行迁移:</p> <pre><code>$ flask db init $ flask db migrate </code></pre> <h2><strong>尝试1</strong></h2> <p>所以我需要直接访问我的SQLite数据库,并删除表。首先,我尝试使用以下代码删除所有表:</p> <pre><code>#drop alembic_version table if db.engine.dialect.has_table(db.engine, 'alembic_version'): version = db.Table('alembic_version', db.metadata,autoload_with=db.engine) version.drop() </code></pre> <p>在<a href="https://github.com/inveniosoftware/invenio-db/issues/72" rel="nofollow noreferrer">thread</a>中找到。在</p> <p>运行此函数时,我得到错误:</p> <pre><code>sqlalchemy.exc.UnboundExecutionError: Table object 'alembic_version' is not bound to an Engine or Connection. Execution can not proceed without a database to execute against. </code></pre> <p>好吧,引擎配置有问题,或者其他什么。我的引擎创建在我的\uuu init_uy.py文件中,并使用内存:</p> <pre><code>engine = create_engine('sqlite://') </code></pre> <p>我对发动机配置不是很精通,在这一点上我卡住了。我不知道是否需要在上下文处理器之外执行此操作?也许它没有把引擎信息拉进来?也许我需要把引擎绑起来?在</p> <h2><strong>尝试2</strong></h2> <p>在查看了有关SQLAlchemy引擎连接的信息后,找到了<a href="https://docs.sqlalchemy.org/en/13/core/engines.html" rel="nofollow noreferrer">here</a>和{a3},我尝试使用我的flask shell上下文处理器直接删除表:</p> <pre><code>@app.shell_context_processor def make_shell_context(): return {'db':db,'User':User} </code></pre> <pre><code>from sqlalchemy import create_engine engine=create_engine('sqlite://') engine Engine(sqlite://) engine.execute('DROP TABLE IF EXISTS alembic_version') <sqlalchemy.engine.result.ResultProxy object at 0x0000028EFEA9A588> exit() </code></pre> <p>但是它没有工作,因为我可以查询数据库中的另一个表,它返回一个完整的表。不过为了确定一下,我又试着迁移了:</p> <pre><code>$ flask db migrate </code></pre> <p>结果与上述相同:</p> ^{pr2}$ <p>所以不是桌子真的掉了。同样的问题也出现在第1次尝试中,我是否需要在上下文处理器之外执行此操作?我需要做更多的引擎配置吗?在</p> <p>任何帮助或指导都将不胜感激。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>要直接打开sqlite数据库,可以使用sqlitebrowser<a href="https://sqlitebrowser.org/" rel="nofollow noreferrer">https://sqlitebrowser.org/</a></p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
将Pandas数据帧转换为PyTorch张量?
7 回答
将Pandas数据帧转换为scipy稀疏矩阵
3 回答
将Pandas数据帧转换为Spark Datafram时出现问题
2 回答
将pandas数据帧转换为spark DataFram时出错
9 回答
将Pandas数据帧转换为spark datafram时收到错误
7 回答
将Pandas数据帧转换为Spark数据帧
4 回答
将Pandas数据帧转换为Tensorflow数据
5 回答
将Pandas数据帧转换为tkinter obj
2 回答
将pandas数据帧转换为XML
5 回答
将Pandas数据帧转换为值sql语句
8 回答
将pandas数据帧转换为元组
3 回答
将pandas数据帧转换为元组列表
4 回答
将pandas数据帧转换为元组列表并删除所有pandas数据类型
2 回答
将pandas数据帧转换为具有头和数据类型的numpy数组
7 回答
将pandas数据帧转换为内存中的拼花地板,并将其加载到Python中的Hadoop中
1 回答
将pandas数据帧转换为内存中类似文件的对象?
6 回答
将Pandas数据帧转换为内存功能(&F)
5 回答
将pandas数据帧转换为列表列表
9 回答
将pandas数据帧转换为列表列表以输入到RNN
9 回答
将Pandas数据帧转换为单行DataFram
4 回答