python - python - “类型”对象不可下标错误
问题描述
我正在尝试放置schools.data的数据文件,这只是一个列出许多大学的文件。它说“类型”对象在终端中不可下标。这是代码
import urllib
import sqlite3
import json
import time
import ssl
conn = sqlite3.connect('universityrawdata.sqlite')
cur = conn.cursor()
cur.execute('''CREATE TABLE IF NOT EXISTS Universitylocations (address TEXT, geodata TEXT)''')
fh = open("schools.data")
count = 0
for line in fh:
if count > 200:
print ('Retrieved 200 locations, restart to retrieve more')
break
address = line.strip()
print('')
cur.execute("SELECT geodata FROM Universitylocations WHERE address= ?",(bytes[address]))
print("Resolving", data)
url = fh + urllib.urlencode({"sensor":"false", "address": address})
print("Retrieving", url)
uh = urllib.urlopen(url, context=scontext)
data = uh.read()
print('Retrieved',len(data),'characters',data[:20].replace('\n',''))
count = count + 1
try:
js = json.loads(str(data))
except:
continue
if 'status' not in js or (js['status'] != 'OK' and js['status'] != 'ZERO_RESULTS') :
print('==== Failed to Retrieve ====')
print (data)
continue
cur.execute('''INSERT INTO Universitylocations (address, geodata) VALUES (?, ?)''', (bytes[address],bytes[data]))
conn.commit()
if count % 10 == 0 :
print('Pausing for a bit...')
time.sleep(5)
print("Run process.py to read the data on a database")
任何人都可以帮忙吗?我有这个问题有一段时间了。
解决方案
这条线是罪魁祸首:
cur.execute("SELECT geodata FROM Universitylocations WHERE address= ?",(bytes[address]))
改变。bytes[address]
_ (address,)
方法:
cur.execute('''SELECT geodata FROM Universitylocations WHERE address= ?''',(address,))
检查您的数据类型是数据库。
推荐阅读
- vim - 如何完成不区分大小写的缓冲区搜索和区分大小写的完成?
- objective-c - 从 AppDelegate 到哪里?如何返回上一个视图和访问实例
- powershell - 将一串 1 和 0 转换为十六进制
- python - 在 python 数据框中的 groupby 上应用具有多个参数的函数,包括来自上一行的值
- r - 使用 ggboxplot 定位选定的 p 值
- c++ - C++ 链表不保留新节点
- reactjs - 将键添加到项目列表会中断,但仅在更新时
- angular - Angular Observable - 从响应中获取价值
- python-3.x - 单元测试用全局部分模拟 AWS Lambda 函数,Python
- linux - 捕获持续时间不到一秒的进程