【问题标题】:Problem having SQL statements that contain " or 'SQL 语句包含“或”的问题
【发布时间】:2011-11-24 01:27:03
【问题描述】:

我正在使用 python 将 HTML 存储在 SQLite3 数据库中。当我将一些 HTML 插入到 SQL 表中时,当我有 '"' 字符时会出现错误/问题。

我的问题的以下示例创建了不正确的 SQL 语句:

INSERT INTO mytable(id, html, other) VALUE(1, " <img src="images/1.png" alt=""/> ", "some other info")
# it should be something like
INSERT INTO mytable(id, html, other) VALUE(1, " <img src=\"images/1.png\" alt=\"\"/> ", "some other info")

我怎样才能有一个带有 " 字符的 SQL 语句?

import sqlite3

HTML       = """ <img src="images/1.png" alt=""/> """ # NOTE the " characters in it
insert_qry = """ INSERT INTO mytable(id, html, other) VALUE(%s, "%s", "%s")"""

conn = sqlite3.connect( GlobalVars.db_path )
cur  = conn.cursor()
res  = cur.execute( insert_qry % (1, HTML, "some other info") )


# THESE FUNCTIONS DONT SOLVE MY PROBLEM:
def format_for_DB( src_code ):
    """ Post: """

    src_code = src_code.replace( '"', '\"' )
    src_code = src_code.replace( "'", "\'" )
    return src_code


def format_for_display( src_code ):
    """ Post: """

    src_code = src_code.replace( '\"', '"' )
    src_code = src_code.replace( "\'", "'" )
    return src_code

def format_for_DB( src_code ):
    """ Post: """

    src_code = src_code.replace( '"', '""' )
    src_code = src_code.replace( "'", "''" )
    return src_code


def format_for_display( src_code ):
    """ Post: """

    src_code = src_code.replace( '""', '"' )
    src_code = src_code.replace( "''", "'" )
    return src_code

【问题讨论】:

    标签: python sql sqlite syntax


    【解决方案1】:

    使用参数化查询:

    query =  """ INSERT INTO mytable(id, html, other) VALUES(?, ?, ?) """
    
    # ...
    
    cur.execute(query, (1, HTML, "some other info"))
    

    【讨论】:

    • 如果答案是“总是用户参数化查询”。我们可以将这个问题重用于许多类似的错误。
    猜你喜欢
    • 2021-12-21
    • 1970-01-01
    • 2011-06-09
    • 2021-02-14
    • 2011-04-23
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多