我正在尝试更新sqlalchemy数据库。它会根据我尝试在查询中实现的字符串引发错误。我不想硬编码链接,而是使用变量,因为我循环遍历我的数据库。
print (u)
(u'http://32rfckwuorlf4dlv.ca/linklist/1-general\n',)
currentlink = (str(u)[:-3][1:])
print currentlink
u'http://32rfckwuorlf4dlv.ca/linklist/1-general\n'
这失败了..
x = Item.query.filter_by(link=currentlink).first()
print x
try:
print x.id
x.title = 'test'
except Exception as e:
print(str(e))
db.session.commit()
打印:'NoneType'对象没有属性'id'
这有效..
x = Item.query.filter_by(link=u'http://32rfckwuorlf4dlv.ca/linklist/1-general\n').first()
print x
try:
print x.id
x.title = 'test'
except Exception as e:
print(str(e))
db.session.commit()
打印:http://32rfckwuorlf4dlv.ca/linklist/1-general\n'> 打印:90
答案 0 :(得分:1)
两件事
您的描述中的变量u
似乎是一个元组,因此您只需使用currentlink = u[0]
即可获取网址链接。
硬编码中的当前链接 u'http://32rfckwuorlf4dlv.ca/linklist/1-general \ n'和 http://32rfckwuorlf4dlv.ca/client-check \ n 是不同的。我认为这就是你从数据库中获得Nonetype的原因。
答案 1 :(得分:1)
好的原因是currentlink
实际上是"u'http://32rfckwuorlf4dlv.ca/linklist/1-general\\n"
,而不是u'http://32rfckwuorlf4dlv.ca/linklist/1-general\n'
。
假设u
是tuple
,您应该
currentlink = u[0]
代替。
如果您想让您的示例正常工作(不推荐,那么仅用于教化目的):
currentlink = str(u)[:-3][3:].replace("\\n", "\n")
如果u
是str
,则需要弄明白为什么它是str
而不是tuple
。