小编gue*_*tli的帖子

关于mysql游标和迭代器

想象一下,我有一个mysql游标和数据读取.数据量可能非常大,我想每次处理一行.

一个简单直接的方式可能是这样的:

while True:
    row = cursor.fetchone()
    if not row: break
    .....
Run Code Online (Sandbox Code Playgroud)

但这看起来不太好,所以我想知道这种方式是否像想象的那样有效:

for row in iter(cursor.fetchall())
Run Code Online (Sandbox Code Playgroud)

我想知道的是:如果我使用这种iter(cursor.fetchall())方式,它是先获取所有数据还是一次只取一行?

任何想法都表示赞赏.

谢谢

python mysql cursor fetchall

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

Django/WSGI应用程序中的持久数据库连接

我希望在django支持的Web应用程序中保持对第三方遗留数据库的持久连接.

用户 -  INET  -  Web服务器 - 持久DB连接

我想保持Web应用程序和旧数据库之间的连接打开,因为为这个特殊的数据库创建新连接非常慢.

它不像通常的连接池,因为我需要存储每个Web用户的连接.用户"Foo"需要在Web服务器和旧版DB之间建立自己的连接.

到目前为止,我使用Apache和wsgi,但如果其他解决方案更合适,我可以改变.

到目前为止我使用django.在这里我也可以改变.但是痛苦会更大,因为已经有很多代码需要再次集成.

到目前为止,我使用Python.我想Node.js在这里会更合适,但改变的痛苦太高了.

当然需要某种超时.如果N分钟没有来自用户"Foo"的http请求,那么持久连接将需要关闭.

怎么能解决这个问题?

更新

我叫它,DB但它不是通过settings.DATABASES配置的数据库.这是一个奇怪的,传统的,不是广泛的类似DB的系统,我需要集成.

如果我现在有50个人在线使用网络应用程序,那么我需要有50个持久连接.每个用户一个.

用于连接到DB的代码

我可以在每个请求中执行此行:

strangedb_connection = strangedb.connect(request.user.username)
Run Code Online (Sandbox Code Playgroud)

但是这个操作很慢.使用连接很快.

当然strangedb_connection不能序列化,也不能存储在会话中:-)

python django database-connection

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

如何在Django中获取URL(带有协议和域)(没有请求)?

我想在cron工作中发送邮件.邮件应包含指向我的应用程序的链接.

在cron作业中,我没有请求对象,也不能使用request.build_absolute_uri().

AFAIK的站点框架可以在这里提供帮助.但是没有给我协议(http vs https)?

我的应用程序是可重用的,有时会在http和有时在https网站上托管.

更新

我搜索一个常见的django方式.可以创建自定义设置,但首选django标准的解决方案.

相关问题:https://code.djangoproject.com/ticket/16734

django url cron

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

django:将BadRequest提升为例外?

是否有可能BadRequest在django中提出异常?

我已经看到你可以筹集404 [1].

用例:在helper方法中,我从request.GET加载一个json.如果json因为浏览器(IE)切断网址而被切断,我想提出一个匹配的异常.

BadRequest异常看起来合适,但到目前为止在django中似乎没有这样的异常.

在1.6中有一个SuspiciousOperation异常.但这与我的情况不符,因为它与安全无关.

当然,我可以尝试一下try ..除了在我的帮助方法中查看方法,但这不是DRY.

有人一个解决方案,我不需要try..exception围绕我的帮助方法的每次调用?

[1] https://docs.djangoproject.com/en/1.6/ref/exceptions/#django.core.urlresolvers.Resolver404

更新

代码示例:

def my_view(request):
    data=load_data_from_request(request) # I don't want a try..except here: DRY
    process_data(data)
    return django.http.HttpResponse('Thank you')

def load_data_from_request(request):
    try:
        data_raw=json.loads(...)
    except ValueError, exc:
        raise BadRequest(exc)
    ...
    return data
Run Code Online (Sandbox Code Playgroud)

python django exception-handling httpresponse

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

pip -e:没有神奇的下划线替换

如果使用带有"pip install -e ..."的git repo进行安装,则某些下划线会变为破折号.

有没有办法阻止这个?

我想自动化东西.我想要回购foo_bar,而~/src/foo_bar不是~/src/foo-bar.

python pip virtualenv

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

条件模拟:如果条件匹配,则调用原始函数

如何在模拟中有条件地调用orignal方法?

在这个例子中,我只想伪造一个返回值if bar=='x'.否则我想调用原始方法.

def mocked_some_method(bar):
    if bar=='x':
        return 'fake'
    return some_how_call_original_method(bar)

with mock.patch('mylib.foo.some_method', mocked_some_method):
    do_some_stuff()
Run Code Online (Sandbox Code Playgroud)

我知道这有点奇怪.如果我想mylib.foo.some_method在侧面假装do_some_stuff()它应该是无条件的.some_method应该嘲笑所有(不是一些)呼叫.

在我的情况下,它是一个集成测试,而不是mylib.foo.some_method一个小的单元测试,并且是一种经常被使用的调度程序.在一个案例中,我需要伪造结果.

python mocking

19
推荐指数
2
解决办法
8502
查看次数

自动创建.pyi文件?

如何自动创建pyi文件的样板代码?

我想创建一个保华集团作为描述类型提示文件pep484其中包含了所有的方法名.

我不想要魔法.我想在自动创建文件后添加类型信息.

我想避免复制+粘贴工作.

目标:在PyCharm中为Python2键入提示.

python type-hinting pycharm

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

将两个上下文管理器合二为一

我使用Python 2.7,我知道我可以这样写:

with A() as a, B() as b:
    do_something()
Run Code Online (Sandbox Code Playgroud)

我想提供一个方便的助手,两者都做.此助手的用法应如下所示:

with AB() as ab:
    do_something()
Run Code Online (Sandbox Code Playgroud)

现在AB()应该做两件事:创建上下文A()并创建上下文B().

我不知道如何编写这个便利助手

python contextmanager

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

使用 mocker 修补 pytest

我安装了pytest-mock并使用了一个模拟程序,我试图像补丁一样运行,但是我得到“类型错误:需要一个有效的目标来修补。你提供了‘返回 a + b’”

# test_capitalize.py
import time


def sum(a, b):
    time.sleep(10)
    return a + b

def test_sum(mocker):
    mocker.patch('return a + b');
    assertEqual(sum(2, 3), 9)
Run Code Online (Sandbox Code Playgroud)

python mocking pytest

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

如何绕过Python 2.7上缺少的`exist_ok`?

在Python 2.7 os.makedirs()上缺少exist_ok.这仅适用于Python 3.

我知道这是一项有效的工作:

try:
    os.makedirs(settings.STATIC_ROOT)
except OSError as e:
    if e.errno != errno.EEXIST:
        raise
Run Code Online (Sandbox Code Playgroud)

我可以创建一个自定义my_make_dirs()方法并使用它,而不是os.makedirs(),但这不是很好.

如果你被迫支持Python 2.7,最诡计多端的工作是什么?

AFAIK python-future或者6将无法帮到这里.

python-2.7 os.path

18
推荐指数
2
解决办法
5920
查看次数