小编Jam*_*Lam的帖子

在SQLAlchemy中有条件地过滤

有没有办法filter在SQL Alchemy ORM中有条件地为查询添加参数?

例如,想象一下,我有以下几点:

q = session.query(X)
if a:
 q.filter(X.y == 'a')
elif b:
 q.filter(X.y == 'a', X.z == 'b')
elif c:
 q.filter(X.y == 'a', X.p == 'd') 
Run Code Online (Sandbox Code Playgroud)

有没有办法说只需添加

X.z == 'b' 如果 b

无需(X.y == 'a')在每个过滤器中读取.

好像我能做到

q.filter(X.y == 'a').filter(X.y == 'b')

但这会更改正在执行的查询.

python sqlalchemy

9
推荐指数
1
解决办法
4461
查看次数

获取 SQLAlchemy 的 `func` 中可用的函数列表

func我目前使用SQLAlchemy并严重依赖

from sqlalchemy import func

不幸的是,我只知道

http://docs.sqlalchemy.org/en/rel_1_0/core/functions.html

就您可以使用的功能类型的文档而言。

例如,您可以使用func.timediffinMySQL但这没有记录(我相信)。我如何找到 的可能功能列表MySQL?我已经尝试过dir(func),但这似乎没有返回有用的结果。

python mysql sqlalchemy

7
推荐指数
0
解决办法
1696
查看次数

Flask SQLAlchemy设置expire_on_commit = False

在Flask-SQLAlchemy中,位于:

https://pythonhosted.org/Flask-SQLAlchemy/queries.html

您可以通过访问您的会话db.session.

如何通过db.session具有访问权限的会话

expire_on_commit=False

我尝试过,db.session.expire_on_commit = False但这并不适合生效.

sqlalchemy flask flask-sqlalchemy

6
推荐指数
1
解决办法
1411
查看次数

使用 Flask 测试异常返回码

我有以下代码块

class APITests(unittest.TestCase):

    def setUp(self):
        app.config['TESTING'] = True
        self.app = app.test_client()
        app.config['SECRET_KEY'] = 'kjhk'

    def test_exn(self, query):
        query.all.side_effect = ValueError('test')
        rv = self.app.get('/exn/')
        assert rv.status_code == 400
Run Code Online (Sandbox Code Playgroud)

我想检查 ) 的返回码self.app.get('/exn/。但是,我注意到query.all()将异常传播到测试用例,而不是捕获它并返回错误代码。

在 Flask 中抛出异常时,如何检查无效输入的返回码?

python flask python-unittest

6
推荐指数
1
解决办法
2092
查看次数

调用父级 __init__()

我正在使用Python 2.6.6。

我已将错误代码缩小到以下两类:

class Graph(object):
  def __init__(self, name):
    self.name = name
    self.testme = 3
Run Code Online (Sandbox Code Playgroud)

class StepPlot(Graph):
  def __init__(self, name):
    print("fdasfdsf")
    print(dir(super(Graph, self)))
    super(Graph, self).__init__(name)
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我实例化StepPlotwith时StepPlot('fdsfa'),出现错误

TypeError: object.__init__() takes no parameters

难道它不能接受一个参数吗?

看着

什么时候调用Python的super().__init__()?

这个班级组织应该有效。

我从根本上错过了一些东西吗?任何帮助,将不胜感激。

python class super

5
推荐指数
1
解决办法
209
查看次数

带补丁的单元测试行为(烧瓶)

我正在尝试patch我的烧瓶API中的方法,但似乎方法调用没有被替换.不app.test_client()这样做,我很想念在引擎盖下的东西.

例如,如果我跑

 @patch('k.stats.mstats')
  def test_ps(self, mstats):
    mstats.return_value = (1, 2, 3)
    rv = self.app.get('/ps/')
Run Code Online (Sandbox Code Playgroud)

我通过调试器运行到下面的点:

@app.route('/ps/', methods=['GET'])
def ps():
  import pdb
  pdb.set_trace()
  mstats()
Run Code Online (Sandbox Code Playgroud)

并检查mstats,我将取回未被嘲笑的功能.

但是,如果我从k.stats import mstats断点运行,我会找回我正在寻找的模拟方法.

如何确保调用模拟方法?

python unit-testing

5
推荐指数
1
解决办法
1591
查看次数

记住 Python 垃圾收集

如果我使用一个memoize装饰器,例如类似于:

https://wiki.python.org/moin/PythonDecoratorLibrary#Memoize

我是否需要担心内存不足和需要手动垃圾收集?例如,如果我有一个长时间运行的 Python 进程,它不断地记忆,我不需要确保dict它不会变得太大。不要memoize装饰通常也需要做高速缓存收回?

为什么这不是所有可以保持任意数量中间状态的装饰器的问题?

使用lru_cachefrom 会functools解决这个问题吗?

python garbage-collection

5
推荐指数
1
解决办法
247
查看次数

Python单击"库重命名参数"

我使用的Click库,但我似乎无法找到类似行为destargparse.

例如,我有

@click.option('--format', type=click.Choice(['t', 'j']))
def plug(format):
  pass
Run Code Online (Sandbox Code Playgroud)

请注意,我使用的标志--format被转换为内置的Python构造format,这是不理想的.

有没有办法更改传递给选项的click函数的参数?

python python-click

5
推荐指数
2
解决办法
2265
查看次数