为特定列值添加特定行数据

2024-10-03 11:13:07 发布

您现在位置:Python中文网/ 问答频道 /正文

CSV image

大家好,, 我是python新手。 当我在comm_rate列中找到一个特定值时,我想添加utility_namezip以打印输出,如下面的示例所示。我们将非常感谢您的帮助

以下是CSVfile的链接:

最高比率为: Napakiak Ircinraq Power Co (99634, AK)-$0.839779005525

这是我的代码和附带的CSV图像:

import csv

def pronmpt_filename():
    filename = input("Please enter the data file: ")
    return filename

def comm_rate():
    commR_list = []
    with open(pronmpt_filename(), "r") as my_csv:
        reader = csv.DictReader(my_csv, delimiter=",")
        for row in reader:
            commR = row["comm_rate"]
            if commR != None and commR != "":
                commR_list.append(float(row["comm_rate"]))

    avg_commR = sum(commR_list) / len(commR_list)
    print("")
    print("The average commercial rate is: ", avg_commR)
    print("")
    print("The highest rate is: \n", max(commR_list))
    print("")
    print("The lowest rate is: \n", min(commR_list))

Tags: csvtherateismydeffilenamelist
2条回答

你真的应该这么做

" SELECT 1 FROM " + table + " WHERE info=" + info + ")" "

当存在与where子句匹配的行时,这将返回1

此外,如果只需要返回1,则使用distinct,无论有多少行与where条件匹配,如

" SELECT distinct 1 FROM " + table + " WHERE info=" + info + ")" "

查询的问题是,您将info的值附加到查询文本中,但没有按照PostgreSQL的要求将其包装在单引号中。因此,发送到数据库的查询变成

SELECT EXISTS(SELECT 1 FROM myTable WHERE info=valueOfInfo)

而不是

SELECT EXISTS(SELECT 1 FROM myTable WHERE info='valueOfInfo')

正确的方法是将绑定变量PreparedStatement一起使用,并且在查询文本中只有占位符(?)。这样,您就不需要担心将变量用引号括起来,或者更重要的是,不需要担心SQL注入的可能性

此外,使用后应注意关闭声明;这是使用try-with-resources statement最容易做到的(假设您使用的是Java 7或更高版本)。因此,您的方法的固定版本可能如下所示:

public boolean checkExist(String table, String info) {

    final String query = "SELECT EXISTS(SELECT 1 FROM " + table
            + " WHERE info = ?)";

    try (PreparedStatement st = con.prepareStatement(query,
             ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY)) {
        st.setString(1, info); // bind the variable to the placeholder
        try (ResultSet rs = st.executeQuery()) {
            if (rs.next()) {
                return rs.getBoolean(1); // EXISTS() returns a boolean
            }
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return false;
}

相关问题 更多 >