为什么我不能在Python中执行时使用带有sqlite的printf

时间:2014-10-01 20:19:52

标签: python sqlite printf

Per this pageprintf属于sqlite的核心功能,因此,对于sqlite3 shell,我可以成功执行此语句:

sqlite> create table foo as select printf("%5.2f", 42.424242) bar;

然而,如果我尝试用Python脚本做我认为相同的事情,那么sqlite3.OperationalError: no such function: printf会出错。这是我使用的脚本:

# -*- coding: utf-8 -*-
import os
import sys
import sqlite3

db_filename = 'printf.db'
if os.path.isfile(db_filename):
   os.remove(db_filename)

db = sqlite3.connect(db_filename)
db.text_factory = str

cur = db.cursor()

cur.execute(r'create table foo as select printf("%5.2f", 42.424242) bar')

有人知道为什么会这样吗?

修改:根据g4ur4v的建议,我将脚本中的cur.execute('create...更改为cur.execute(r'create...。错误没有改变。

1 个答案:

答案 0 :(得分:4)

printf被添加为sqlite3版本3.8.3中的核心功能。可能你正在使用的Python使用旧版本。这些信息可以在release notes

中找到
  

2014-02-03(3.8.3)

     
    

添加了对公用表表达式和WITH子句的支持。

         

添加了 printf() SQL函数。

  

检查Python正在使用的Sqlite3库版本的一种方法是发出以下命令:

print(sqlite3.sqlite_version)