在Python中使用DuckDB时,如何处理SQL字符串的普通引号问题?
解决DuckDB INSERT语句的Python语法错误
你遇到的确实是引号冲突导致的语法错误:Python中用单引号'包裹字符串时,字符串内部的单引号会被解析为字符串的结束标记,从而打断SQL语句的结构,引发SyntaxError。
以下三种方法都可以解决这个问题:
- 方法一:用双引号包裹整个SQL语句,内部保留单引号
import duckdb con = duckdb.connect() con.query('CREATE TABLE people(id INTEGER, name VARCHAR);') con.query("INSERT INTO people VALUES (1, 'Mark'), (2, 'Hannes')")
- 方法二:对SQL语句内部的单引号进行转义(添加反斜杠
\)
import duckdb con = duckdb.connect() con.query('CREATE TABLE people(id INTEGER, name VARCHAR);') con.query('INSERT INTO people VALUES (1, \'Mark\'), (2, \'Hannes\')')
- 方法三:用三引号(单/双均可)包裹SQL语句,适合复杂多行SQL
import duckdb con = duckdb.connect() con.query('CREATE TABLE people(id INTEGER, name VARCHAR);') con.query('''INSERT INTO people VALUES (1, 'Mark'), (2, 'Hannes')''')
内容的提问来源于stack exchange,提问作者Антон Попенко
相关产品推荐
相关产品推荐

