我正在尝试使用unittest模块测试某个函数是否不会抛出任何异常.这可能吗?我只知道assertRaises方法,但这只是测试抛出异常,而None参数不适用于Exception类型参数...
有任何想法吗?
我试图在UNION中从不同的SQL查询中获取两行,这可能吗?我所能实现的只是两个独立的行,但我无法对它们进行求和,DB引擎让我告诉*)FROM(SUM旁边的部分)附近的语法中有错误...
这是查询:
SELECT * FROM
(SELECT COUNT(*) as cntclients
FROM
(SELECT DISTINCT clientkey AS clients
FROM <table>
WHERE <conditions...>)
) AS clients
) cntclients
UNION
(SELECT SUM(occurrences) AS cntclientsad
FROM <table2>
WHERE <conditions...>
)
Run Code Online (Sandbox Code Playgroud)
这让我举个例子:
cntclients
----------
901
50
Run Code Online (Sandbox Code Playgroud)
在第一行中添加SELECT SUM(*)FROM而不是SELECT*FROM,并用括号括起两个查询只会引发我提到的错误...
我想要
cntclients <- or whatever name...
----------
951
Run Code Online (Sandbox Code Playgroud)
有什么想法应该如何运作?
有没有办法从MySQL中的虚拟DUAL表中加入字段?
说我有一个
SELECT 1 as n1 FROM DUAL
n1
--
1
Run Code Online (Sandbox Code Playgroud)
和a
SELECT 2 as n2 FROM DUAL
n2
--
2
Run Code Online (Sandbox Code Playgroud)
我可以加入两种选择加入某种查询作为...
SELECT 1 as n1 FROM DUAL JOIN (SELECT 2 as n2 FROM DUAL) ON 1=1
Run Code Online (Sandbox Code Playgroud)
?
我有一个带有String列的表,但它仅包含整数(作为字符串)。
问题是当我想在某些查询上对这一列进行order_by时。SQLAlchemy(或更具体地说,是python)对字符串使用字典顺序,因此
>>> '100000' < '99999'
True
Run Code Online (Sandbox Code Playgroud)
即使在
>>> 100000 < 99999
False
Run Code Online (Sandbox Code Playgroud)
如何通过此字符串列的数值实现order_by?
我目前有这样的查询:
session.query(TableName).filter(TableName.column == 'some_value').order_by(TableName.string_column_holding_integers).all()
Run Code Online (Sandbox Code Playgroud)
请注意,将列的类型更改为整数不是一种选择,我需要在当前条件下正确地按数字排序(按数值)。
也只是发现直接在使用SQL的数据库(此数据库是MySQL数据库)上无法正确地按此列排序,因此我发现使用CAST(未签名的string_column_holding_integers AS)可以在此工作。但是还没有找到一种直接对SQLAlchemy查询执行此操作的方法(CAST部分)。
刚刚发现两种语法都有效.
哪个更有效率?
element not in list
Run Code Online (Sandbox Code Playgroud)
要么:
not element in list
Run Code Online (Sandbox Code Playgroud)
?
我有这个清单:
dc = ["hello", "world"]
Run Code Online (Sandbox Code Playgroud)
而另一个:
lines = ["This is", "an example of hello", "line in the world of strings", "Testing"]
Run Code Online (Sandbox Code Playgroud)
我希望在直流上找到那些属于线条任何元素的元素......
我可以将行循环为:
for line in lines:
# what to do here?
Run Code Online (Sandbox Code Playgroud)
但我不知道如何确切地找到dc中的"hello"元素可以在"hello的例子"中找到,或者在"字符串世界中的行"中找到dc中的"world"在线......
也许我不应该循环线?
我必须收到一个字符串,表示通过time.strptime处理的日期,其格式类似于%d%m%Y,但事实是当日期数小于10时,那一天将显示为一位数数字,而不是%d格式所需的两位数.
这意味着
'8052012'
Run Code Online (Sandbox Code Playgroud)
将被转换为
day 08, month 05, year 2012
Run Code Online (Sandbox Code Playgroud)
但随着字符串
'2052012'
Run Code Online (Sandbox Code Playgroud)
strptime给了我
day 20, month 5, year 2012
Run Code Online (Sandbox Code Playgroud)
代替
day 2, month 5, year 2012
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个默认行为?(也许是为了强迫%m应该是一个2位数字,所以strptime将没有选择使用当天剩下的东西?)
编辑:请注意,在输入字符串上,月份总是有两位数,即使它可以用一个数字表示.这里的问题只是可以用一个或两个数字表示的那一天,具体取决于幅度......
如何以最pythonic的方式迭代多个列表?
说我有2个列表:
l1 = [1, 2, 3]
l2 = [4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
如何在不改变l1和l2的情况下实现l1和l2中整个元素集的迭代?
我可以简单地加入两个列表然后迭代结果:
l3 = l1[:]
l3.extend(l2)
for e in l3:
# ... whatever with e
Run Code Online (Sandbox Code Playgroud)
但是这个解决方案听起来并不像pythonic,也没有效率,所以我正在寻找更好的方法.
我有一个类型的字符串:
"04/15/2013","A lot of text: numbers 123,412","3,123.99","-","1,123,123,99"
Run Code Online (Sandbox Code Playgroud)
什么是正则表达式来解析它,以便我得到每个逗号分隔的字符串(由"分隔"的字符串)进行进一步解析?
我对使用python的正则表达式模块感兴趣,但是如果给出了更好的解决方案,那就没关系了
python ×7
mysql ×3
assertions ×1
contains ×1
dual-table ×1
find ×1
in-operator ×1
iteration ×1
join ×1
list ×1
not-operator ×1
regex ×1
sequence ×1
sql ×1
sqlalchemy ×1
strptime ×1
sum ×1
time ×1
union ×1
unit-testing ×1