【问题标题】:Django sql statements with non english symbols带有非英文符号的 Django sql 语句
【发布时间】:2020-12-07 10:49:42
【问题描述】:

我有sql语句,where中有非英文符号

sap_code 变量包含俄语文本)

sap_code = 'ОВОЩИ – ФРУКТЫ'
sql_string = 'SELECT ' \
            'SAP_CODE, ' \
            'SKU, ' \
        'FROM INFO ' \
        f'WHERE ROWNUM < {settings.NQ_SQL_LIMIT}'
if sap_code:
    sql_string += f' AND SAP_CODE = {sap_code}'
with connections[db].cursor() as cursor:
    exec_result = cursor.execute(
        sql_string
    )

我得到这样的错误django.db.utils.DatabaseError: ORA-00911: invalid character(oracle 数据库)

有什么办法可以解决吗?

【问题讨论】:

标签: python sql python-3.x django


【解决方案1】:

这是 Oracle 的限制。您将需要引用您的非 ASCII 字符。我已将您的最终片段更改为双引号,然后引用内部字符串。如果您对在此处使用原始 SQL 死心塌地,那应该可以解决此问题。

sap_code = 'ОВОЩИ – ФРУКТЫ'
sql_string = 'SELECT ' \
             'SAP_CODE, ' \
             'SKU, ' \
             'FROM INFO ' \
             f'WHERE ROWNUM < {settings.NQ_SQL_LIMIT}'
if sap_code:
    sql_string += f" AND SAP_CODE = '{sap_code}'"
with connections[db].cursor() as cursor:
    exec_result = cursor.execute(
        sql_string
    )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 2013-01-03
    • 2021-12-22
    • 1970-01-01
    • 2021-08-07
    • 2011-01-08
    • 1970-01-01
    相关资源
    最近更新 更多