我做了许多网页浏览和浏览,我想将响应存储在数据库中,以避免再次请求它们(提高速度但也不会造成麻烦)。我正在使用sqlalchemy和python,我已经创建了一个ORM类,如下所示:
class MyClass(Base):
__tablename__ = "myclass"
url = Column(String, primary_key=True)
article = Column(String)
创建新文章并将其添加到我的会话中时,即:
session.add(MyClass(url=url,article=requests.get(url).text)
我可以将它添加到数据库中。但是,当我查询数据库中的url时,我收到此消息,
OperationalError: (sqlite3.OperationalError) unrecognized token: ':' [SQL: u'SELECT http://[mywebsite]]
我知道它在http://中遇到了':'但是我想知道是否是这种情况,有没有办法使用完整的网址作为主键?
此外,在存储效率和用于存储网页及其相应内容的查找效率方面,推荐的数据类型是什么?
答案 0 :(得分:-1)
我认为,在存储之前转义网址会解决问题。
例如:
article = requests.get(url).text
url = url.replace(":", "COLON")
session.add(MyClass(url=url,article=article)
以类似的方式,您可以在数据输出时将其恢复