我想在Python中执行此查询:
cur=self.con.execute("insert into %s(url_id,url_name,url_title) values(%d,'%s','%s')" % (table,url_i,url_n,url_t))
在这里,我分别在列url_id,url_name和url_title中插入url id,url name和url title。 id和url插入得很好但不是url_title。 url_title列只是空白。
如果我们只是为了好玩,交换url_n和url_t的位置,那么问题仍然存在!我认为问题可能与url_title列本身有关,但是这个小实验证明问题可能与url_t变量有关。
我们通过使用BeautifulSoup和Urllib2提取特定网页的实际网址标题来获取url_t的值。如果您有兴趣,请参考以下内容:
def title(self,soup):
url_title=soup.title.string
return url_title
这将返回我想在数据库中插入的url标题。
我创建了表,我们打算使用Django模型插入值。这是models.py文件:
class url_list(models.Model):
url_id=models.IntegerField()
url_name=models.CharField(max_length=200)
url_title=models.CharField(max_length=200)
def __unicode__(self):
return self.url_name
那么,我做错了什么?
答案 0 :(得分:1)
使用数据库api:
,而不是弄乱游标和原始SQLfrom yourapp.models import url_list
new_url = url_list(url_id=url_i, url_name=url_n, url_title=url_t)
new_url.save()
答案 1 :(得分:0)
我找到了解决方案。如果您使用的是Django,请参阅解决所有问题的Burhan Khalid简易解决方案:
from yourapp.models import url_list
new_url = url_list(url_id=url_i, url_name=url_n, url_title=url_t)
new_url.save()
但是,如果您不使用模型或Django(或两者)并且涉及普通表,请允许我提请您注意url_t变量既不是字符串也不是unicode变量这一事实。当我这样做时:
type(url_t)
我得到了url_t的类型并返回了:
<class 'bs4.something'>
这是我们不想要的。
我们希望:
<type 'unicode'>
要将其转换为unicode,只需执行以下操作:
unicode(url_t)
即使将其转换为unicode,我也注意到问题仍然存在。然后,通过几个实验,我做了以下几点:
url_t=str(url_t)
url_t=url_t[1:]
瞧。问题解决了。