我有一个程序,当前从数据库读取数据,可以找到here https://en.wikiversity.org/wiki/Applied_Programming/Databases/Northwind_SQL。我让用户选择他们想要显示的特定记录,以便 SQL 命令将执行该记录。现在我有一个表,当前显示一些不包含任何 NULL 或空字符串的记录。如果它确实有 NULL 或空字符串,它会给我一个错误,并且程序不会显示记录。我认为这就是 NoneType 错误主要来自的地方。我不知道如何解决这个问题。我如何确保它也计算 Null 或空字符串?希望这能解决这个错误。
如果您尝试测试数据库,像 Customers 这样的表不会显示,因为它具有空值。
这是回溯错误:
line '..', in read_display(record)
line = format_.format(*rec)
TypeError: unsupported format string passed to NoneType.__format__
这就是我的代码的样子:
import sqlite3
def read_display(record):
database = 'data.db'
connection = sqlite3.connect(database)
c = connection.cursor()
sql = "SELECT * FROM {0}".format(record)
cursor.execute(sql)
conn.commit()
results = cursor.fetchall()
header = tuple(i[0] for i in c.description)
width = max((len(str(x)) for d in data for x in d))
data = [header] + results
config = [{'width': 0} for _ in range(len(data[0]))]
for rec in data:
for c, value in enumerate(rec):
config[c]['width'] = max(config[c]['width'], len(str(value)))
format_ = []
for f in config:
format_.append('{:<' + str(f['width']) + '}')
format_ = ' | '.join(format_)
for rec in data:
line = format_.format(*rec)
print(line)
你有错误
line = format_.format(*rec)
你会得到同样的错误
'{:s}'.format(None)
所以它看起来rec
has None
在名单上。
您必须将其转换为字符串str(None)
您可以使用str()
与所有元素rec
确保;确定:
rec = [str(x) for x in rec]
所以代码应该是
for rec in data:
rec = [str(x) for x in rec]
line = format_.format(*rec)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)