什么"检查'未解决的参考'实际上意味着

时间:2014-06-23 03:45:31

标签: python sqlite pycharm

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上收到此消息。不确定它是指什么:

enter image description here

我通过简单地将代码更改为上面的代码来获取错误消息:

# 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版本存在问题,而不是另一个问题:

enter image description here

如果我将指针悬停在棕色高光上,我会收到错误消息。 “BLAH BLAH”版本没有问题。

这告诉我它与SQL / SQLite有关。正确?

2 个答案:

答案 0 :(得分:0)

当您在"""限定的字符串中使用双引号时,您会遇到麻烦。

Python能够在这些类型的情况下处理双引号,但看起来你的编辑器不喜欢它 - 很可能你的编辑器使用比Python解释器更简单的解析器,并且以{{ {1}}。

“Unresolved Reference”在这个上下文中意味着PyCharm认为单词""" x"x """是一个引用变量,因为它错误地认为双引号结束了你的字符串。当然,您没有名为Finish的参考变量。

答案 1 :(得分:0)

从JetBrains回复了一下。这是一个错误。他们正在努力。

相关问题