Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';在Python中执行时,我将printf与sqlite一起使用_Python_Sqlite_Printf - Fatal编程技术网

为什么可以';在Python中执行时,我将printf与sqlite一起使用

为什么可以';在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

Per,
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)条)吗?