为什么可以';在Python中执行时,我将printf与sqlite一起使用
Per,为什么可以';在Python中执行时,我将printf与sqlite一起使用,python,sqlite,printf,Python,Sqlite,Printf,Per,printf属于sqlite的核心功能,因此,使用sqlite3shell,我可以成功执行以下语句: sqlite> create table foo as select printf("%5.2f", 42.424242) bar; 但是,如果我尝试使用Python脚本执行我认为相同的操作,它会在sqlite3中出错。OperationalError:没有这样的函数:printf。以下是我使用的脚本: # -*- coding: utf-8 -*- import os impo
printf
属于sqlite的核心功能,因此,使用sqlite3
shell,我可以成功执行以下语句:
sqlite> create table foo as select printf("%5.2f", 42.424242) bar;
但是,如果我尝试使用Python脚本执行我认为相同的操作,它会在sqlite3中出错。OperationalError:没有这样的函数: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…
。错误没有改变。printf
是作为核心函数添加到sqlite3
的3.8.3版中的。您正在使用的Python可能使用了旧版本。这些信息可以在以下内容中找到:
2014-02-03(3.8.3)
增加了对公共表表达式和WITH子句的支持
添加了printf()SQL函数
检查Python使用的Sqlite3库版本的一种方法是发出以下命令:
print(sqlite3.sqlite_version)
你能试试
cur.execute(r'createtablefoo as select printf(“%5.2f”,42.424242)条)吗?
?