python - 无法从脚本访问数据库

标签 python sqlalchemy flask flask-sqlalchemy

我正在尝试通过脚本从数据库表中删除一行。也许这不是最简单的方法,但我认为它应该是可能的。我正在尝试以下操作:

from stemewebapp import app
from stemewebapp.models import Job, db
import sys

#
# Check arguments
#
if len(sys.argv) != 2:
    print 'USAGE: %s <job uuid>' % (sys.argv[0])
    sys.exit(-1)
job_uuid = sys.argv[1]

#
# Do everything in context
#
with app.test_request_context():

    #
    # Get job
    #
    query = db.session.query(Job).filter_by(uuid=job_uuid)
    #query = Job.query.filter_by(uuid=job_uuid)
    if 1 != query.count():
        raise RuntimeError('Got more than one job by UUID.')

    #
    # Delete from database
    #
    db.session.delete(query.first())
    db.session.commit()

我收到以下错误:

OperationalError: (OperationalError) no such table: job u'SELECT count(*) AS count_1 \nFROM (SELECT job.id AS job_id, job.creation_date AS job_creation_date, job.name AS job_name, job.uuid AS job_uuid, job.pid AS job_pid, job.completed AS job_completed \nFROM job \nWHERE job.uuid = ?) AS anon_1' ('743d952f-9cfc-4efc-bfa5-58da67c4a131',)

最佳答案

这不是正确的方法。

Sqlalchemy 在查询对象上提供名为 one 的方法。

     try:
         obj = db.session.query(Job).filter_by(uuid=job_uuuid).one()
     except NoResultFound:
         raise
     except MultipleResultsFound:
         raise RuntimeError('Got more than one job by UUID.')
     else:  
         db.session.delete(obj)
         db.session.commit()

One() 仅获取一个结果,如果有多个结果,则会引发该异常。

错误表明表不存在。检查是否访问了错误的数据库或忘记初始化数据库。当前信息不足以帮助您。

关于python - 无法从脚本访问数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11517258/

相关文章:

bash - 以(半)自动方式设置 FLASK_APP

python - 如何确定 sklearn 逻辑回归的预测概率是否准确?

python - 为什么我的数据没有在我的 SQLAlchemy 模型中正确表示?

python - sqlAlchemy,具体继承,但父级有外键

python - 加入 sqlalchemy 的混合属性

python - 使用 Gunicorn 将 Celery 作为 Flask 应用程序运行

python - 从 SQLalchemy 中的自引用表创建树

python - 使用初始化的父对象创建子类对象

Python 大学名称和缩写以及网络链接

Python + BeautifulSoup : How to get wrapper out of HTML based on text?