小编m0j*_*0j0的帖子

在Python中搜索对象列表

让我们假设我正在创建一个类似于C风格结构的简单类,只保存数据元素.我试图弄清楚如何搜索对象列表中具有等于某个值的属性的对象.下面是一个简单的例子来说明我正在尝试做什么.

例如:

class Data:
    pass

myList = []

for i in range(20):
    data = Data()
    data.n = i
    data.n_squared = i * i
    myList.append(data)
Run Code Online (Sandbox Code Playgroud)

我如何搜索myList列表以确定它是否包含n == 5的元素?

我一直在谷歌搜索并搜索Python文档,我想我可以用列表理解来做到这一点,但我不确定.我可能会补充一点,我必须使用Python 2.4.3,所以任何新的gee-whiz 2.6或3.x功能都无法使用.

python

79
推荐指数
8
解决办法
12万
查看次数

使用Python和SOAPpy生成WSDL

首先,我承认我是Web服务的新手,虽然我熟悉HTML和基本Web内容.我使用Python创建了一个快速而肮脏的Web服务,该服务调用MySQL数据库中的存储过程,该服务只返回BIGINT值.我想在Web服务中返回此值,并且我想生成一个我可以为Web开发人员提供的WSDL.我可以补充一点,存储过程只返回一个值.

这是一些示例代码:

#!/usr/bin/python

import SOAPpy
import MySQLdb

def getNEXTVAL():
    cursor = db.cursor()
    cursor.execute( "CALL my_stored_procedure()" )  # Returns a number
    result=cursor.fetchall()

    for record in result:
        return record[0]

db=MySQLdb.connect(host="localhost", user="myuser", passwd="********", db="testing")
server = SOAPpy.SOAPServer(("10.1.22.29", 8080))
server.registerFunction(getNEXTVAL)
server.serve_forever()
Run Code Online (Sandbox Code Playgroud)

我想生成一个我可以给网络人员的WSDL,我想知道是否可以让SOAPpy为我生成一个.这可能吗?

python soap wsdl zsi soappy

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

在MySQL中使用十六进制数字

我有一个存储过程,需要将十六进制数转换为十进制数.我已经阅读了UNHEX()函数的文档,但是它返回了一个二进制值.我想要做的是这样的事情:

CREATE PROCEDURE foo( hex_val VARCHAR(10) )
BEGIN
    DECLARE dec_val INTEGER;

    SET dec_val = UNHEX( hex_val );

    -- Do something with the decimal value
    select dec_val;
END
Run Code Online (Sandbox Code Playgroud)

我错过了什么?如何将UNHEX()'d值转换为无符号整数?

mysql hex

11
推荐指数
3
解决办法
2万
查看次数

使用MySQLdb从Python中获取MySQL存储过程的返回值

我在MySQL数据库中有一个存储过程,它只是更新日期列并返回上一个日期.如果我从MySQL客户端调用这个存储过程,它工作正常,但是当我尝试使用MySQLdb从Python调用存储过程时,我似乎无法让它给我返回值.

这是存储过程的代码:

CREATE PROCEDURE test_stuff.get_lastpoll()
BEGIN
    DECLARE POLLTIME TIMESTAMP DEFAULT NULL;
    START TRANSACTION;

    SELECT poll_date_time
      FROM test_stuff.poll_table
      LIMIT 1 
      INTO POLLTIME
    FOR UPDATE;

    IF POLLTIME IS NULL THEN
        INSERT INTO 
               test_stuff.poll_table 
               (poll_date_time)
        VALUES 
               ( UTC_TIMESTAMP() );

        COMMIT;
        SELECT NULL as POLL_DATE_TIME;
    ELSE
        UPDATE test_stuff.poll_table SET poll_date_time = UTC_TIMESTAMP();
        COMMIT;
        SELECT DATE_FORMAT(POLLTIME, '%Y-%m-%d %H:%i:%s') as POLL_DATE_TIME;
    END IF;
END
Run Code Online (Sandbox Code Playgroud)

我用来尝试调用存储过程的代码与此类似:

#!/usr/bin/python

import sys
import MySQLdb

try:
    mysql = MySQLdb.connect(user=User,passwd=Passwd,db="test_stuff")
    mysql_cursor = mysql.cursor()

    results=mysql_cursor.callproc( "get_lastpoll", () )
    print results

    mysql_cursor.close()
    mysql.close()

except …
Run Code Online (Sandbox Code Playgroud)

python mysql

7
推荐指数
3
解决办法
3万
查看次数

使用格式化输出自动扩展Python列表

有没有人知道是否有办法自动扩展Python中的列表,用逗号分隔?我正在编写一些使用MySQLdb库的Python代码,我正在尝试使用某些键值动态更新MySQL数据库中的行列表.

例如,在下面的代码中,我想让record_ids列表中的数值扩展为SQL" IN"子句.

import MySQLdb
record_ids = [ 23, 43, 71, 102, 121, 241 ]

mysql = MySQLdb.connect(user="username", passwd="secret", db="apps")
mysql_cursor = mysql.cursor()

sqlStmt="UPDATE apps.sometable SET lastmod=SYSDATE() where rec_id in ( %s )"

mysql_cursor.execute( sqlStmt, record_ids )
mysql.commit()
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激!

python mysql list

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

关于元组的新手Python问题

我是Python的新手,我正在使用该cx_Oracle模块编写一些数据库代码.在cx_Oracle文档中,他们有一个代码示例如下:

import sys
import cx_Oracle

connection = cx_Oracle.Connection("user/pw@tns")
cursor = connection.cursor()

try:
    cursor.execute("select 1 / 0 from dual")
except cx_Oracle.DatabaseError, exc:
    error, = exc.args
    print >> sys.stderr, "Oracle-Error-Code:", error.code
    print >> sys.stderr, "Oracle-Error-Message:", error.message
Run Code Online (Sandbox Code Playgroud)

我的问题与创建"错误"对象的位置有关." , ="是做什么的?我尝试搜索Python文档,搜索引擎在搜索运算符时效果不佳.:-)

我知道exc.args是一个单例元组,但我只是不理解" , ="语法.如果我删除逗号,我会收到错误消息" AttributeError: 'tuple' object has no attribute 'code'".

有人能指出我记录的地方吗?谢谢!

编辑:

无需解压缩元组即可实现:

import sys
import cx_Oracle

connection = cx_Oracle.Connection("user/pw@tns")
cursor = connection.cursor()

try:
    cursor.execute("select 1 / 0 from dual")
except cx_Oracle.DatabaseError, exc:
    print >> sys.stderr, …
Run Code Online (Sandbox Code Playgroud)

python cx-oracle tuples

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

有条件地在鱼中设置局部变量

我已经仔细阅读了鱼壳文档,我正在尝试弄清楚如何在鱼函数中有条件地设置局部变量。

换句话说,如果您有一个函数,并且希望使用 if-then-else 逻辑修改局部变量。

function foo
    set --local variable something
    if blah
        set --local variable something_else
    end
end
Run Code Online (Sandbox Code Playgroud)

例如,假设我有一个接受文件名作为参数的普通函数,如果缺少文件扩展名,我想将它添加到参数中。

function frob
    set --local filename $argv[1]
    echo "Before: $filename"

    if not string match --regex --entire "\.fish" $filename
        set --local filename $filename.fish
    end

    echo "After: $filename"
end
Run Code Online (Sandbox Code Playgroud)

问题是,由于局部变量只有块作用域,这不起作用。运行该“frob”函数只会在“之前”和“之后”中打印相同的内容。

我能想到的唯一解决方法是使用临时全局变量,并在函数末尾手动删除它。

例子:

function frob
    # Use global variable, and try to handle collisions
    if  set --query --global filename
        set --global filename_saved $filename
    end

    set --global filename $argv[1]
    echo "Before: $filename"

    if not string match …
Run Code Online (Sandbox Code Playgroud)

fish

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

标签 统计

python ×5

mysql ×3

cx-oracle ×1

fish ×1

hex ×1

list ×1

soap ×1

soappy ×1

tuples ×1

wsdl ×1

zsi ×1