小编Oin*_*Oin的帖子

如何使用胭脂红的wcar宏?

我对如何使用胭脂红进行调用感到困惑.我wcarcarmine的文档中找到了描述的宏:

(defmacro wcar [& body] `(car/with-conn pool spec-server1 ~@body))
Run Code Online (Sandbox Code Playgroud)

wcar除了redis命令之外,每次我想和redis交谈时,我是否真的需要打电话?或者我可以在开始时调用一次吗?如果是这样的话?

这是tavisrudd的redis库中的一些代码看起来像(来自我的玩具url shortener项目的testsuite):

(deftest test_shorten_doesnt_exist_create_new_next 
  (redis/with-server test-server
    (redis/set "url_counter" 51)
    (shorten test-url)
    (is (= "1g" (redis/get (str "urls|" test-url))))
    (is (= test-url (redis/get "shorts|1g")))))
Run Code Online (Sandbox Code Playgroud)

而现在我只能通过这样编写来使用胭脂红:

(deftest test_shorten_doesnt_exist_create_new_next
  (wcar (car/set "url_counter" 51))
    (shorten test-url)
    (is (= "1g" (wcar (car/get (str "urls|" test-url)))))
    (is (= test-url (wcar (car/get "shorts|1g")))))
Run Code Online (Sandbox Code Playgroud)

那么使用它的正确方法是什么?我没有得到什么基本概念?

clojure redis carmine

10
推荐指数
2
解决办法
2224
查看次数

你如何在JSON API中表示无穷大?

在JSON API中表示无穷大的最佳方法是什么?例如,可以免费阅读本月的文章(对于某些订阅,这将是一个有限的数字,对于高级订阅,这将是无限的).

返回null此用例或扩展 JSON并使用javascript的Infinity值是一个更好的主意吗?后者似乎更合适,但我从未见过这样做的API的例子.

如果有人有任何代表无限的公共Web API的例子,那也很酷.

api json infinity

9
推荐指数
3
解决办法
2486
查看次数

alembic是否关心其迁移文件的名称?

我正在审查同事写的一些代码,我注意到Alembic迁移文件中包含的迁移ID与文件名不匹配,例如文件18b6422c9d3f_some_migration.py包含

revision = 'c4218d61f026'
Run Code Online (Sandbox Code Playgroud)

我的同事不知道这是怎么发生的,所有其他修订文件的名称似乎都与他们的修订ID对齐.为了我自己的理智,我想重命名该文件以匹配其修订版ID.

很明显,Alembic修订版ID不包含任何真正的语义值,并且重命名文件似乎不会破坏任何内容.我仍然可以向前和向后运行迁移.但我对Alembic相当缺乏经验,我想确保这样做是安全的.

如果我git mv 18b6422c9d3f_some_migration.py c4218d61f026_some_migration.py可以期待任何长期问题?

python sqlalchemy alembic

8
推荐指数
1
解决办法
1913
查看次数

从python绑定到pgcrypto

我想从python中调用一些pgcrypto函数.即px_crypt.我似乎无法弄清楚正确的目标文件链接似乎.

这是我的代码:

#include <Python.h>

#include "postgres.h"

#include "pgcrypto/px-crypt.h"


static PyObject*
pgcrypt(PyObject* self, PyObject* args)
{
    const char* key;
    const char* setting;

    if (!PyArg_ParseTuple(args, "ss", &key, &setting))
        return NULL;

    return Py_BuildValue("s", px_crypt(key, setting, "", 0));
}

static PyMethodDef PgCryptMethods[] =
{
     {"pgcrypt", pgcrypt, METH_VARARGS, "Call pgcrypto's crypt"},
     {NULL, NULL, 0, NULL}
};

PyMODINIT_FUNC
initpypgcrypto(void)
{
     (void) Py_InitModule("pypgcrypto", PgCryptMethods);
}
Run Code Online (Sandbox Code Playgroud)

和gcc命令和输出:

x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/home/ionut/github/postgres/contrib/ -I/usr/include/postgresql/9.4/server/ -I/usr/include/python2.7 -c …
Run Code Online (Sandbox Code Playgroud)

c python postgresql python-c-api pgcrypto

7
推荐指数
1
解决办法
507
查看次数

如何测试django数据库模式?

我想编写可以显示数据库是否与models.py文件同步的测试.实际上我已经编写过它们,只是为了发现每次基于models.py文件运行测试时django都会创建一个新的数据库.有什么办法可以让models.py测试使用现有的数据库模式吗?在mysql/postgresql中的那个,而不是/myapp/models.py中的那个?

我不关心数据库中的数据,我只关心它的模式,即我希望我的测试注意到数据库中的表的字段数少于models.py文件中的模式.

如果这有任何相关性,我正在使用unittest框架(实际上是它的django扩展).

谢谢

python django unit-testing model

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

为什么用HTML作为字体实现github徽标?

任何人都可以解释如何实现页面左上角或底部中心的小octocat徽标,为什么

我只能看到这个标记:

<span class="mega-icon mega-icon-blacktocat"></span>
Run Code Online (Sandbox Code Playgroud)

这个CSS:

.mega-icon-blacktocat:before {
    content: "?";
}

.mega-icon {
font-family: 'Octicons Regular';
}
Run Code Online (Sandbox Code Playgroud)

我看不到那里的图片,所以我猜他们正在使用这个字体.但是为什么会出现那种奇怪的角色,为什么它会在风格而不是HTML中?

html css github octicons

4
推荐指数
1
解决办法
589
查看次数

如何使用alembic --autogenerate忽略某些模式

我有一个图书馆,它是一个更大项目的一部分.该库在与较大项目共享的(PostgreSQL)数据库中使用自己的模式.

我想用来alembic revision --autogenerate只生成库模式的迁移,并忽略对main/default模式中表的更改.这样做有什么选择吗?

FWIW,我已经include_schemas=False在env.py中尝试了context.configure 的参数,但它似乎没有做任何事情.

python sqlalchemy database-migration alembic

4
推荐指数
2
解决办法
1657
查看次数

如何从 swig C++ 代码中引发 StopIteration?

我正在尝试通过在类上实现 python 迭代协议来扩展 C++ 库。问题是尝试从 next() 方法引发 StopIteration 异常会使程序出现 SegFault。我用来从 C++ 代码(在 python.i 中)引发异常的方法是这里描述的方法:http ://www.swig.org/Doc1.3/Python.html#Python_nn44

尽管该列表没有列出 StopIteration 异常,但这是我尝试过的:

PyErr_SetString(PyExc_StopIteration, NULL);
Run Code Online (Sandbox Code Playgroud)

c++ python swig

3
推荐指数
1
解决办法
1053
查看次数

Flask after_request'NonType'对象不可调用

我有一个非常繁重的应用程序建立在flask-restful上,所以我将在这里展示问题的较小版本.我将我的应用程序划分为具有该结构的模块

Folder A:  
    __init__.py (empty)
    main-file.py (executable file)
    other-file.py  
Run Code Online (Sandbox Code Playgroud)

other-file.py

from flask_restful import reqparse, abort, Api, Resource
from flask import Flask

TODOS = {
'todo1': {'task': 'build an API'},
'todo2': {'task': '?????'},
'todo3': {'task': 'profit!'},
}
class TodoList(Resource):
    def get(self):
        return TODOS  
Run Code Online (Sandbox Code Playgroud)

main-file.py

from flask import Flask,request
from  other-file import *

app = Flask(__name__)
api = Api(app)

@app.before_request
def before_request():
    print 'before request'

@app.after_request         #This block fails
def after(response):
    print 'after request'
    #I need to perform some db operations here …
Run Code Online (Sandbox Code Playgroud)

python flask

3
推荐指数
1
解决办法
1877
查看次数

Python 3 namedtuple子类中的_asdict返回空字典

如何使用_asdictPython 3的子类namedtuple

这是我尝试过的:

class A(namedtuple('B', 'c')):
    pass

a = A(3)

a._asdict()
{}
Run Code Online (Sandbox Code Playgroud)

这在Python 2中可以正常工作并返回:

OrderedDict([('c', 3)])
Run Code Online (Sandbox Code Playgroud)

python namedtuple python-3.x

3
推荐指数
1
解决办法
1975
查看次数

什么时候使用shellout?

什么时候适合在食谱中使用Shellout代替bash块或执行?由于它的日志记录,我倾向于将其默认用于所有外部调用,但是命令的冗长性是一个缺点。

chef-infra mixlib-shellout

2
推荐指数
1
解决办法
1907
查看次数

我如何展平传递给 recur 的参数?

我正在尝试了解loop/recur. 我想将函数的返回向量传递回循环,我尝试过这样的事情:

(defn foo [x y] 
  [(dec x) y])

(loop [x 3 y 4]
  (if (> x 0)
    (do
      (prn x y)
      (recur (foo x y)))))
Run Code Online (Sandbox Code Playgroud)

这给出了:

1. Caused by java.lang.IllegalArgumentException
   Mismatched argument count to recur, expected: 2 args, got: 1
Run Code Online (Sandbox Code Playgroud)

现在我可以将循环参数更改为另一种有效的形式:

(defn foo [x y] 
  [(dec x) y])

(loop [[x y] [3 4]]
  (if (> x 0)
    (do
      (prn x y)
      (recur (foo x y)))))
Run Code Online (Sandbox Code Playgroud)

我想知道是否有任何方法可以更改第一个代码以离开(loop [x 3 y 4] ...)但更改以recur某种方式传递给的参数。我想我需要类似apply函数的东西,但我无法使用它 …

loops clojure

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