[英]Issue with the web.py tutorial when using sqlite3
作为记录,我已经对此进行了调查,但似乎无法弄清楚出了什么问题。
因此,我正在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.OperationalError:靠近“(”:语法错误
我曾尝试调查此问题,但无法确定问题的根源。
我还没有与其他数据库(这是新事物,所以不能确定细节)之间的运气,我无法直接制作sqlite数据库,因此它可能是python的东西,但它与tester.py匹配用sqlite用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');''')
您正在使用SQLite,但正在从其他数据库引擎指定数据类型。 SQLite仅接受INT,TEXT,REAL,NUMERIC和NONE。 布尔是最有可能被映射到数字类型之一,因此DEFAULT 'F'
是无效的语法(虽然我不认为这将是在SQL中的任何版本不支持布尔的数据类型有效的,因为它们一般使用基础存储的INTEGER)。
使用SQLite数据类型和允许的默认值重写CREATE TABLE语句,您的代码应该可以正常工作。
有关(某些不寻常的)SQLite类型系统的更多详细信息: http : //www.sqlite.org/datatype3.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.