python和sql从表中检索结果

时间:2014-07-12 14:24:50

标签: python sql

我创建了一个sql db,其中包含以下内容:

Database: [URL_PARSED]
    File name: E:\URL Parser\URL_PARSED.db
    File size: 2048 bytes
    Page size: 1024
    Encoding: UTF-8
    Auto vacuum: 0
    Tables: 1
    Views: 0
------------------------------------------------------------
Table [PARSED_URL]
    Fields: 7
        [Time_Extracted]: TEXT
        [scheme]: TEXT
        [location]: TEXT
        [Url_path]: TEXT
        [object_parameters]: TEXT
        [query]: 
        [search]: TEXT
    Foreign Keys: 0
    Indexes: 0
    Triggers: 0
    Unique constraints: 0
    Check constraints: 0
------------------------------------------------------------

我正在尝试使用以下代码检索谷歌搜索结果:

connect_to_db = sqlite3.connect('URL_PARSED.db')
cursor_for_db =connect_to_db.cursor()

cursor_for_db.execute("SELECT * FROM URL_PARSED WHERE search ="q=") :
                       results = cursor_for_db.fetchone()
                       print (results)

有人可以帮助我,因为这不起作用。

3 个答案:

答案 0 :(得分:0)

执行后的分号应该在这里。引号没有被正确转义,应该是:

cursor_for_db.execute("SELECT * FROM URL_PARSED WHERE search ='q='")
results = cursor_for_db.fetchone()
print (results)

编辑,因为OP说他想要以q =开头的项目,查询应该是

SELECT * FROM URL_PARSED WHERE SUBSTR(search, 1, 2) = 'q='

答案 1 :(得分:0)

如果您要查找search 开始的所有行,请使用q=

cursor_for_db.execute("SELECT * FROM URL_PARSED WHERE search LIKE 'q=%'")

%通配符使这成为一个启动搜索;任何匹配模式q=后跟其他任何内容的文本都将匹配。

这将构造一个有效的SQL查询作为Python字符串,因此开始"和结束"之间的所有内容都是SELECT语句。

如果需要对查询进行参数化,请使用SQL参数占位符并传入一系列参数值;这里你只有一个,但你需要附加%通配符作为参数值的一部分:

query = 'q=%'
cursor_for_db.execute("SELECT * FROM URL_PARSED WHERE search LIKE ?", (query,))

然后会为您正确引用query值。

答案 2 :(得分:0)

这就是你要找的东西:

cursor_for_db.execute("SELECT * FROM URL_PARSED WHERE search ='q='")
results = cursor_for_db.fetchone()
print (results)

但你应该更好地使用:

cursor_for_db.execute("SELECT * FROM URL_PARSED WHERE search = ?", ("q=",))