Sqlite - 使用反引号(`)或双引号(")与python

dyl*_*nmc 5 python sqlite backticks double-quotes

我在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等).

CL.*_*CL. 17

SQL标准说字符串必须使用'single quotes',引用时标识符(例如表名和列名)必须使用"double quotes".

为了与MySQL兼容,SQLite还允许对字符串使用单引号和字符串的双引号,但仅当上下文使含义明确时.(在SELECT 'rowid' ...,允许使用字符串,因此您可以使用字符串.)如果可能,请始终使用标准SQL引号.

为了与MySQL兼容,SQLite还允许`backticks`使用标识符.

为了与Microsft数据库兼容,SQLite还允许[brackets]使用标识符.

(这适用于所有SQLite版本.)


laa*_*lto 5

最好使用双引号来引用标识符,例如列名或表名。这是 SQL 标准。

反引号也可以使用,但它们仅支持 MySQL 语法兼容性。

单引号用于字符串文字,而不是标识符。这就是为什么您在使用它们时会得到字面值。

进一步阅读:SQLite 关键字

  • 是的,他们会的,但是如果您无论如何都要编写新的 SQL,最好使用双引号。 (3认同)