小编Jim*_*Jim的帖子

DictCursor似乎不适用于psycopg2

我之前没有使用psycopg2,但我正在尝试将光标工厂更改为DictCursor,以便fetchall或fetchone将返回字典而不是列表.

我创建了一个测试脚本,使事情变得简单,只测试这个功能.这是我觉得应该工作的一点代码

import psycopg2
import psycopg2.extras

conn = psycopg2.connect("dbname=%s user=%s password=%s" % (DATABASE, USERNAME, PASSWORD))

cur = conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
cur.execute("SELECT * from review")

res = cur.fetchall()

print type(res)
print res
Run Code Online (Sandbox Code Playgroud)

res变量总是一个列表,而不是我期望的字典.

我实现的当前解决方法是使用此函数来构建字典并运行fetchall通过它返回的每一行.

def build_dict(cursor, row):
    x = {}
    for key,col in enumerate(cursor.description):
        x[col[0]] = row[key]
    return d
Run Code Online (Sandbox Code Playgroud)

Python是版本2.6.7,psycopg2是版本2.4.2.

python postgresql dictionary psycopg2

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

在 Perl 中迭代 bless 对象

我正在编写一些代码来使用 BigIP::iControl 模块查询 F5 负载均衡器。

现在,当我对从特定函数返回的变量执行转储器时,我得到以下输出。

我在迭代这个对象时遇到了很多麻烦。

我怎样才能迭代这个并只取出每个成员的monitor_status?

$VAR1 = [
          bless( [
                   bless( {
                            'monitor_status' => 'MONITOR_STATUS_UP',
                            'member' => bless( {
                                               'address' => '127.0.0.0.1',
                                               'port' => '8085'
                                             }, 'Common::IPPortDefinition' )
                          }, 'LocalLB::PoolMember::MemberMonitorStatus' ),
                   bless( {
                            'monitor_status' => 'MONITOR_STATUS_UP',
                            'member' => bless( {
                                               'address' => '127.0.0.0.1',
                                               'port' => '8085'
                                             }, 'Common::IPPortDefinition' )
                          }, 'LocalLB::PoolMember::MemberMonitorStatus' ),
                   bless( {
                            'monitor_status' => 'MONITOR_STATUS_DOWN',
                            'member' => bless( {
                                               'address' => '127.0.0.0.1',
                                               'port' => '8085'
                                             }, 'Common::IPPortDefinition' )
                          }, 'LocalLB::PoolMember::MemberMonitorStatus' ),
                   bless( {
                            'monitor_status' => …
Run Code Online (Sandbox Code Playgroud)

iteration variables perl

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

显示Django中另一个表的行数

我的模型文件中有以下类

class HardwareNode(models.Model):
    ip_address = models.CharField(max_length=15)
    port = models.IntegerField()
    location = models.CharField(max_length=50)
    hostname = models.CharField(max_length=30)

    def __unicode__(self):
        return self.hostname

class Subscription(models.Model):
    customer = models.ForeignKey(Customer)
    package = models.ForeignKey(Package)
    location = models.ForeignKey(HardwareNode)
    renewal_date = models.DateTimeField('renewal date')

    def __unicode__(self):
        x = '%s %s' % (self.customer.hostname, str(self.package))
        return x
Run Code Online (Sandbox Code Playgroud)

我想计算特定HardwareNode上的订阅数量,并在管理部分显示HardwareNode类,例如节点2上托管的10个订阅.

我还在学习Django,我不知道我会在哪里完成这个.我可以/应该在models.py或HTML中执行此操作吗?

谢谢,

-seth

python django django-models

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

Python线程测试不起作用

编辑

我通过分叉进程而不是使用线程解决了这个问题.从评论中的评论和链接,我不认为线程是正确的举动.

谢谢大家的帮助.

完成编辑

我之前没有做太多线程.我已经创建了一些简单的示例"Hello World"脚本,但实际上没有任何工作.

为了帮助我掌握它,我使用Nagios中的二进制文件编写了一个简单的脚本来查询HTTP等服务.如果我有10个服务超时,则此脚本可以正常工作,但超时为1秒,脚本将花费超过10秒的时间.

我想要做的是彼此并行运行所有检查.这应该减少完成所需的时间.

我目前正在收到段错误,但不是所有时间.奇怪的是,我在processCheck函数中检查主机,我可以打印出所有主机.在检查主机之后,hosts变量仅打印集合中的一个或两个主机.我觉得这是命名空间问题,但我不确定如何解决.

我在这里发布了整个代码没有MySQL数据库,但是他的service_list视图的结果看起来像.

非常感谢任何帮助.

6543L, 'moretesting.com', 'smtp')
(6543L, 'moretesting.com', 'ping')
(6543L, 'moretesting.com', 'http')


from commands import getstatusoutput
import MySQLdb
import threading
import Queue
import time

def checkHost(x, service):
    command = {}
    command['http'] = './plugins/check_http -t 1 -H '
    command['smtp'] = './plugins/check_smtp -t 1 -H '

    cmd = command[service]
    cmd += x
    retval = getstatusoutput(cmd)
    if retval[0] == 0:
        return 0
    else: 
        return retval[1]

def fetchHosts():
    hostList = []
    cur.execute('SELECT veid, hostname, service from …
Run Code Online (Sandbox Code Playgroud)

python multithreading

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