我正在查询数据库并显示名称或结果。如果有几个"迈克尔"数据库中的名称,显示所有姓氏及其姓氏。
如果数据库中只有1个Michael,则显示该Michael的全名以及错误"列表索引超出范围。"
这是因为我要求程序显示名为Michael的4个结果,但只有一个可用。
使用
时如何解决此问题 for _ in range(0, 4):
print(str(results[_])) # displays results
以下是一切:
import pypyodbc
def queryfirst():
return ("SELECT FIRSTNAME, LASTNAME "
"FROM dbo.My_Table "
"WHERE FIRSTNAME = ?")
def sqlfirst():
firstname = "Michael"
if True:
connection = pypyodbc.connect('Driver={SQL Server};Server=mysSQLserver;Database=MyDatabaseName;Trusted_Connection=yes;')
cursor = connection.cursor()
SQLCommand = queryfirst()
Values = [firstname]
cursor.execute(SQLCommand,Values)
return cursor.fetchmany(4)
def calculate():
results = sqlfirst()
if results:
for _ in range(0, 4):
print(str(results[_])) # enters results in entry
connection.close()
calculate()
我不确定如何说"如果结果小于4,则只显示结果。" cursor.fetchmany或cursor.fetchall会有所作为吗?
我需要获得结果的长度吗?
答案 0 :(得分:1)
乍一看,这不是SQL界面的问题,而是Python的基本机制。
您应该使用基本的for
构造:
def calculate():
results = sqlfirst()
for r in results:
print(str(r))
在实践中,它会照顾你有4,1或0的情况。
P.S。除非您打算在稍后阶段对查询进行参数化,否则您可能希望使用变量,因为它是“常量”:
QUERY_FIRST = "SELECT FIRSTNAME, LASTNAME"
"FROM dbo.My_Table"
"WHERE FIRSTNAME = ?"