【问题标题】:Can't retrieve str from mySqlite3无法从 mySqlite3 检索 str
【发布时间】:2015-09-19 16:03:44
【问题描述】:

我正在尝试检索存储在 hs_audit.sqlite 的表 T3 中的最新版本的审计问题。我尝试了 cur.exectute 行的多个版本,但一直得到结果 = 无。我是 sqlite 的新手,所以任何人都可以帮助我使用正确的语法。 如果我按如下方式执行 cur.execute 行

cur.execute("SELECT hvq1 FROM T3 WHERE audit_ver = 1")

并删除

con.text_factory = str

它有效,所以我认为问题一定是在 sqlite 命令中使用变量。

max_audit_ver = 1
audit_questions = ["hvq1", "hvq2", "hvq3", "hvq4", "hvq5"]

        count = 0
        for quest in audit_questions:
            con = sqlite3.connect("hs_audit.sqlite")
            con.text_factory = str
            cur = con.cursor()
            cur.execute("SELECT '%s' FROM T3 WHERE audit_ver = '%s'" %  (quest, max_audit_version))
            result = cur.fetchone()
            con.close()
            print "Question =%s" % (quest)
            print "Audit Version =%s" % (max_audit_version)
            print "The Count Is =%s" % (count)
            print "The return from the DB is =%s" % (result)
            count += 1

【问题讨论】:

    标签: sqlite python-2.7 mysql-python


    【解决方案1】:

    注意合成器...max_audit_versionmax_audit_ver

    另一方面,你应该阅读this page,你会发现一些重要的注释,例如:

    # Never do this -- insecure!
    symbol = 'RHAT'
    c.execute("SELECT * FROM stocks WHERE symbol = '%s'" % symbol)
    
    # Do this instead
    t = ('RHAT',)
    c.execute('SELECT * FROM stocks WHERE symbol=?', t)
    print c.fetchone()
    
    # Larger example that inserts many records at a time
    purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
                 ('2006-04-05', 'BUY', 'MSFT', 1000, 72.00),
                 ('2006-04-06', 'SELL', 'IBM', 500, 53.00),
                ]
    c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2019-09-24
      • 2016-05-09
      • 2014-05-26
      相关资源
      最近更新 更多