我有一个Person包含一个name(str)和age(int)列的表的数据库。所以,我为我的sqlite3.connection
def adult(age):
return age > 18
Run Code Online (Sandbox Code Playgroud)
并使用以下代码,它工作正常
connection = sqlite3.connect(r'C:\Dev\Garbage\database.db')
with connection:
connection.create_function('adult', 1, adult)
cursor = connection.cursor()
persons = cursor.execute('select "p"."name", "p"."age" from "Person" "p" where adult("p"."age")').fetchall()
for person in persons:
print(person)
Run Code Online (Sandbox Code Playgroud)
但如果我adult像这样改变
def adult(age):
return 1 / 0
Run Code Online (Sandbox Code Playgroud)
我会得到sqlite3.OperationalError: user-defined function raised exception。在我的项目中,它可能包含大量函数,我想知道 -有没有办法知道哪个函数引发了异常?或者得到ZeroDivisionError: division by zero而不是这个。
这可能是一个愚蠢的问题,但......
list = []
for i in range(1, 5):
for j in range(i):
list.append(i)
print(list)
list2 = [[i]*i for i in range(1, 5)]
print(list2)
Run Code Online (Sandbox Code Playgroud)
使用以下代码我的输出就像
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
[[1], [2, 2], [3, 3, 3], [4, 4, 4, 4]]
Run Code Online (Sandbox Code Playgroud)
我理解为什么第二个看起来像这样,但有没有任何技巧可以让第一个列表理解?
PS
Python 3
我正在为网站编写信使。所以,我有一些函数序列。
首先是
def get_messages(self):
"""select query"""
messages = self.model.load(['or', ('sender', self.my_id), ('receiver', self.my_id)])
return messages
Run Code Online (Sandbox Code Playgroud)
返回带有消息的数据库表中的所有记录,其中我是消息的发送者或接收者。
下一个功能是
def get_dialogs(self):
"""returns dialogs of curr user"""
dialogs = {}
for msg in self.messages:
if msg['receiver'] != self.my_id:
tmp_d = msg['receiver']
else:
tmp_d = msg['sender']
if tmp_d not in dialogs.keys():
dialogs[tmp_d] = [msg]
else:
dialogs[tmp_d].append(msg)
return dialogs
Run Code Online (Sandbox Code Playgroud)
在这里,我正在准备 dict,其中 key 是我与之交谈的用户。
问题是开始。
这是消息序列的屏幕截图。
我希望 dict 键序列将按添加到值列表的最后一条消息进行排序。
在这里,我没有对其进行排序,一个问题实际上是(我无法理解的问题)-默认情况下的键序列应该是1, 4, 222595, 99但程序认为是99, 1, 222595, 4(我检查了get_messagesfunc 以正确的顺序返回消息。
主要问题
如何按 …
在我的 JSON 文件中,我有一系列同名记录
"ability_upgrades":{
"ability":5155,
"time":1226
},
"ability_upgrades":{
"ability":5155,
"time":1426
},
"ability_upgrades":{
"ability":5155,
"time":1497
},
"ability_upgrades":{
"ability":5157,
"time":1543
},
Run Code Online (Sandbox Code Playgroud)
如果我将使用json.loads它只会保存最后的记录。
如果我想要一个列表,我必须做什么ability_upgrades?
我总是用这段代码得到一个NullPointerException
open.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
modify = true;
JFileChooser chooser = new JFileChooser();
file = chooser.getSelectedFile();
BufferedReader reader;
StringBuilder sb = new StringBuilder();
try {
reader = new BufferedReader(new FileReader(file));
String line = reader.readLine();
while(line != null) {
sb.append(line);
sb.append(System.lineSeparator());
line = reader.readLine();
}
text.setText(sb.toString());
}
catch (FileNotFoundException e1) {
e1.printStackTrace();
}
catch (IOException e1) {
e1.printStackTrace();
}
}
});
Run Code Online (Sandbox Code Playgroud)
NullPointerException就行了 reader = new BufferedReader(new FileReader(file));
我该如何重新组织我的代码?
python ×4
dictionary ×1
file ×1
java ×1
jfilechooser ×1
json ×1
list ×1
python-3.x ×1
sorting ×1
sqlite ×1