您的询问对我来说不清楚。您混合了 SQL 数据结构和 Python 数据结构,并且不清楚是从 Python 还是从 SQL 调用。您的查询应该包含您尝试执行的一些代码。
通过 SQL 表中如此简单的数据,您可以将 SQL 表视为 Python 字典。NUMSTR
dict代表你第一个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 注入,并且数据库可以更好地缓存此类语句的查询计划。