【发布时间】:2014-09-28 05:59:27
【问题描述】:
我在 Stack Overflow 中看到了一个与 Android 有关的类似问题,但我想知道是否应该使用反引号 (`) 或双引号 (") - 使用 Python - 来选择表名或 rowid 或你有什么。
我尝试了单引号 - 像这样select 'rowid', * from 'tbl' order by 'rowid'。单引号在某些情况下有效,但不是全部。我学会了使用双引号或反引号,我在查看 SQLite Database Browser 时发现它使用了反引号。
我真的很喜欢在 Python 中的字符串周围加上双引号,因为我来自 Java,所以使用 cursor.execute("select 'rowid',* from 'table';") 是很自然的,而且反引号也同样容易(双引号需要反斜杠并使查询看起来有点混乱)。但是,我只是想确保反引号是可移植的(所有版本的 Windows、Linux、Os x 等)。
【问题讨论】:
-
@Martijn Pieters 问题是,当我使用单引号时,我实际上得到了一个不正确的输出。
-
请注意,您不能在此处使用单引号,单引号仅用于文字字符串值:sqlite.org/lang_keywords.html
-
嗯。出于某种原因——也许你可以解释一下——当我做
"select 'rowid', * from table;"时,我得到了('rowid', name,...)。正如 laalto 刚刚发布的那样 - “单引号用于字符串文字,而不是标识符。” -
抱歉,我的条款搞混了。您需要对标识符使用双引号。或反引号。或方括号。
-
方括号在 sqlite 中工作......我不知道。谢谢大家。
标签: python sqlite double-quotes backticks