我使用sqlite(v2.6.0)作为数据库后端并使用sqlalchemy(v0.7.9)来操作它.最近我收到了一个错误OperationalError: (OperationalError) database is locked
通过搜索stackoverflow,可能的解决方案是增加连接的超时.Referece:OperationalError:数据库被锁定
但我不知道如何在sqlalchemy中做到这一点(因为连接实际上是由它控制的)有人可以给我一个方向吗?
我得到T了 2 列的表格,如下例所示:
C1 C2
----------
A x
A x
A y
B x
B x
Run Code Online (Sandbox Code Playgroud)
我要计算不同数C1为每个价值C2。这个结果应该是这样的:
C1 distinct count
----------------------
A 2 // count distinct x,x,y = 2
B 1 // count distinct x,x = 1
Run Code Online (Sandbox Code Playgroud)
很容易得出这样的 SQL 查询
select C1, count(distinct C2) from T group by C1
Run Code Online (Sandbox Code Playgroud)
然而,正如在postgresql COUNT(DISTINCT ...) very slow 中所讨论的,这个查询的性能很差。我想使用该count (*) (select distinct ...)文章中建议的改进查询 ( ),但我不知道如何使用 group by 来形成查询。
我有一个名为 Info 的类,其中 Info 有一个字符串类型的实例变量,可以通过 Info.getName()
我还有一个实例信息列表,例如class_list = [Info('Aleck'), Info('John')].
给定 a name_list = ['Aleck', 'Bob'],我想在 name_list 中删除 class_list 中具有相同名称的元素,同时我还需要知道名称(例如 Bob)是否不在 class_list 中(例如打印出 bob 不在列表中)
对于上面的示例,结果应该是 class_list = [Info('John')] 并打印出 bob 不在列表中。
我知道这样做的丑陋方式,例如以下代码(我实际上并没有运行它,只是一个示例),是否有优雅或 Pythonic 的方式来做到这一点?
def removeElement(name_list, class_list):
list_to_be_removed = []
for name in name_list:
is_name_in_list = false
for obj in class_list
if name == obj.getName():
list_to_be_removed.add(obj)
is_name_in_list = true
break
if is_name_in_list == false:
print name + ' is not in the list'
is_name_in_list = false …Run Code Online (Sandbox Code Playgroud)