python - 带有非英文符号的 Django sql 语句
问题描述
我有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数据库)
有没有办法解决这个问题?
解决方案
这是 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
)
推荐阅读
- c# - 使用泛型方法更新父子(一对一)
- selenium - 如何在 Selenium WebDriver 中使用 Javascript 获取元素的背景颜色
- asp.net - ASP.NET Core 将 http 重定向到 https,但我不想在 localhost 中执行此操作,我也使用不同的端口
- c++ - 如何为函数提供替代名称?
- react-native - 我应该如何添加质量选择器来反应原生视频?
- visual-studio-code - 如何在特定标记之后突出显示一个单词?
- json - 在 Groovy 中将 JSON 解析为 CSV
- javascript - ReactJS 无法在 rest api 响应中打印嵌套值
- php - 视图不会根据导航栏改变
- java - 无法使用 Ansible 在远程主机中使用基于 java 的命令