小编sas*_*ero的帖子

如何从 sqlite create_function 获取错误类型?

我有一个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而不是这个。

python sqlite

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

Python列表理解技巧

这可能是一个愚蠢的问题,但......

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

python list-comprehension list python-3.x

3
推荐指数
1
解决办法
801
查看次数

Python按上次更改值对dict进行排序

我正在为网站编写信使。所以,我有一些函数序列。
首先是

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 以正确的顺序返回消息。

主要问题
如何按 …

python sorting dictionary

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

Python JSON 解析重复记录

在我的 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

python json

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

使用JFileChooser读取文件

我总是用这段代码得到一个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));

我该如何重新组织我的代码?

java jfilechooser file

0
推荐指数
1
解决办法
1434
查看次数