【发布时间】:2014-08-13 00:48:21
【问题描述】:
PyCharm。代码如下:
# db_create.py
#
# Create the database and tables
#
import sqlite3
from config import DATABASE_PATH
with sqlite3.connect(DATABASE_PATH) as connection:
cursor = connection.cursor()
# Create table
cursor.execute("""
CREATE TABLE ftasks(
task_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
due_date TEXT NOT NULL,
priority INTEGER NOT NULL,
status INTEGER NOT NULL)
""")
# Insert dummy data into the table
cursor.execute("""
INSERT INTO ftasks (name, due_date, priority, status)
VALUES("Finish this tutorial", "02/03/2014", 10, 1)
""")
cursor.execute("""
INSERT INTO ftasks (name, due_date, priority, status)
VALUES("Finish Real Python Course 2", "02/03/2014", 10, 1)
""")
代码运行良好。数据库已创建,一切正常。但是,我在 IDE 上收到此消息。不知道它指的是什么:
我通过简单地更改上面显示的代码来消除错误消息:
# Insert dummy data into the table
cursor.execute("""
INSERT INTO ftasks (name, due_date, priority, status)
VALUES('Finish this tutorial', '02/03/2014', 10, 1)
""")
cursor.execute("""
INSERT INTO ftasks (name, due_date, priority, status)
VALUES('Finish Real Python Course 2', '02/03/2014', 10, 1)
""")
唯一的变化是在 SQL 语句中使用单引号。
为什么双引号版本是未解析的引用?
我应该注意到,这两个版本的代码完全相同产生相同的数据库文件和内容。
基于三引号内的双引号会导致 PyCharm 的编辑器/解析器出现问题的建议进一步研究。
我在编辑器上试过这段代码:
a = """
INSERT INTO atable (column1, column2)
VALUES ("test",'test')
"""
b = """
BLAH BLAH atable (column1, column2)
BLAH ("test",'test')
"""
并且还在 Python 命令行上运行它:
>>> a = """
INSERT INTO atable (column1, column2)
VALUES ("test",'test')
"""
>>> b = """
BLAH BLAH atable (column1, column2)
BLAH ("test",'test')
"""
>>> a
'\nINSERT INTO atable (column1, column2)\nVALUES ("test",\'test\')\n'
>>> b
'\nBLAH BLAH atable (column1, column2)\nBLAH ("test",\'test\')\n'
以上两个定义都产生了具有完全相同结构的字符串。在 Python 命令行、IDLE 或 PyCharm 中,我没有看到关于在三引号字符串中使用这两种引号的任何问题。
IDE 编辑器只有字符串的 SQL 版本有问题,其他没有:
如果我将指针悬停在棕色突出显示上,我会收到错误消息。 “BLAH BLAH”版本没有问题。
这告诉我它与 SQL/SQLite 有关。对吧?
【问题讨论】: