Python 使用sqlite3时web.py教程出现问题
为了记录在案,我对此进行了调查,但似乎无法找出问题所在 所以我在web.py上做教程,然后我进入数据库部分(可以做上面的任何事情)。出于各种原因,我想使用sqlite3。因为我不知道在哪里输入 sqlite3 test.db 行中,我查看sqlite3模块,并用它创建一个数据库。其代码为:Python 使用sqlite3时web.py教程出现问题,python,sqlite,web.py,Python,Sqlite,Web.py,为了记录在案,我对此进行了调查,但似乎无法找出问题所在 所以我在web.py上做教程,然后我进入数据库部分(可以做上面的任何事情)。出于各种原因,我想使用sqlite3。因为我不知道在哪里输入 sqlite3 test.db 行中,我查看sqlite3模块,并用它创建一个数据库。其代码为: import sqlite3 conn = sqlite3.connect("test.db") print("Opened database successfully"); conn.execute('
import sqlite3
conn = sqlite3.connect("test.db")
print("Opened database successfully");
conn.execute('''CREATE TABLE todo
(id serial primary key,
title text,
created timestamp default now(),
done boolean default 'f');''')
conn.execute("INSERT INTO todo (title) VALUES ('Learn web.py')");
但是我得到了错误
已完成布尔值默认值“f”);“”)
sqlite3.error:接近“(”:语法错误
我已经试着研究过这个问题,但我一辈子都搞不清楚问题是什么
我对其他数据库没有什么好运气(这是新的,所以不确定细节),我不能直接创建sqlite数据库,所以它可能是python的东西,但它与我用
如果有人能帮助我,谢谢!您使用的是SQLite,但指定的是来自其他数据库引擎的数据类型。SQLite只接受INT、TEXT、REAL、NUMERIC和NONE。布尔值很可能映射到一种数字类型,因此
默认的“F”
语法无效(尽管我不认为它在任何支持BOOLEAN作为数据类型的SQL版本中都是有效的,因为它们通常对底层存储使用整数)
用SQLite数据类型和允许的默认值重写CREATETABLE语句,代码应该可以正常工作
有关SQLite类型系统(有些不寻常)的更多详细信息:导致错误的问题是您不能在此处使用MySQL now()函数。请尝试
created default current_timestamp
这项工作:
conn.execute('''CREATE TABLE todo
(id serial primary key,
title text,
created default current_timestamp,
done boolean default 'f');''')
谢谢,我发现默认语句也不正确。删除它们修复了问题;如果不能很快让它们工作,我将编辑问题