查询数据库中的元组列表

2024-01-18

由于我是Python编程新手,所以我不太了解如何从数据库查询数据。 首先,我在 SQL Server 中创建了数据库,其中包含 2 列:String列和Numeric column.

+--------+---------+ | String | Numeric | +--------+---------+ | One | 1 | | Five | 5 | | Three | 3 | | Seven | 7 | | Eight | 8 | | Two | 2 | +--------+---------+

例如:

X = [(‘three’,’odd’), (‘one’,’odd’), (‘two’,’even’)]

现在我希望输出遵循以下顺序:odd – even – odd所以会是这样的1 2 3. +-----+------+-----+ | Odd | Even | Odd | +-----+------+-----+ | 1 | 2 | 3 | +-----+------+-----+

如何查询numeric的值string基于如果odd or even the string是在数据库中吗?


您的询问对我来说不清楚。您混合了 SQL 数据结构和 Python 数据结构,并且不清楚是从 Python 还是从 SQL 调用。您的查询应该包含您尝试执行的一些代码。

通过 SQL 表中如此简单的数据,您可以将 SQL 表视为 Python 字典。NUMSTRdict代表你第一个SQL表,我改一下X字典中的元组列表:

NUMSTR = {1: 'one', 2: 'two', 3: 'three'}
X = {'three': 'odd', 'one': 'odd', 'two': 'even'}

def show_even_odd(in_numbers):
    numbers_info = []
    for i in in_numbers:
        try:
            num_name = NUMSTR[i]
            eo = X[num_name]
        except KeyError:
            eo = '???'
        numbers_info.append(eo)
    print(' | '.join(['%4s' % x for x in numbers_info]))
    print(' | '.join(['%4s' % x for x in in_numbers]))


def test():
    show_even_odd([1, 2, 3])

我将数据存储在numbers_info将其显示在一行中。在单独的行中显示有关每个数字的信息会更容易。

EDIT

如果您的问题是获取每个元组的第一个值并显示其数值,则此类代码如下所示:

X = [('three','odd'), ('one','odd'), ('two','even')]
for nn, eo in X:
    print('%s - %s' % (get_number(nn), eo))

现在你必须定义get_number()功能。与全球cursor这可能有效:

def get_number(number_name):
    result = number_name
    cursor.execute('SELECT numeric FROM my_table WHERE String = ?', number_name)
    for txt in cursor.fetchall():
        result = txt[0]
    return result

PS 在这段代码中我使用了? in SELECT做出准备好的陈述。它应该替换为number_name通过 ODBC 驱动程序。这样的操作可以用Python来完成:"SELECT ... WHERE String = '%s'" % (number_name),但准备好的陈述要好得多。它们可以防止 SQL 注入,并且数据库可以更好地缓存此类语句的查询计划。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查询数据库中的元组列表 的相关文章

随机推荐