Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.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 使用sqlite3时web.py教程出现问题_Python_Sqlite_Web.py - Fatal编程技术网

Python 使用sqlite3时web.py教程出现问题

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('

为了记录在案,我对此进行了调查,但似乎无法找出问题所在

所以我在web.py上做教程,然后我进入数据库部分(可以做上面的任何事情)。出于各种原因,我想使用sqlite3。因为我不知道在哪里输入

sqlite3 test.db

行中,我查看sqlite3模块,并用它创建一个数据库。其代码为:

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');''')

谢谢,我发现默认语句也不正确。删除它们修复了问题;如果不能很快让它们工作,我将编辑问题