让我们假设我正在创建一个类似于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功能都无法使用.
首先,我承认我是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为我生成一个.这可能吗?
我有一个存储过程,需要将十六进制数转换为十进制数.我已经阅读了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数据库中有一个存储过程,它只是更新日期列并返回上一个日期.如果我从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中的列表,用逗号分隔?我正在编写一些使用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的新手,我正在使用该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) 我已经仔细阅读了鱼壳文档,我正在尝试弄清楚如何在鱼函数中有条件地设置局部变量。
换句话说,如果您有一个函数,并且希望使用 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)