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有关。正确?
答案 0 :(得分:0)
当您在"""
限定的字符串中使用双引号时,您会遇到麻烦。
Python能够在这些类型的情况下处理双引号,但看起来你的编辑器不喜欢它 - 很可能你的编辑器使用比Python解释器更简单的解析器,并且以{{ {1}}。
“Unresolved Reference”在这个上下文中意味着PyCharm认为单词""" x"x """
是一个引用变量,因为它错误地认为双引号结束了你的字符串。当然,您没有名为Finish
的参考变量。
答案 1 :(得分:0)
从JetBrains回复了一下。这是一个错误。他们正在努力。