sql.Identifier without quoting(不带引号的SQL.IDENTIFIER)
                            本文介绍了不带引号的SQL.IDENTIFIER的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
                        
                        问题描述
我在Web上搜索了"不带引号的SQL.IDENTIFIER",而this post只是相关的。建议使用.format(sql.Identifier。
然而,该方法将双引号添加到标识符中,并且据我所知,它不能用于在PostgreSQL中使用不带引号的标识符。正如我在here中读到的那样,专家建议不要在postgres中引用标识符。
我在sql.Identifier中没有看到跳过the document中的引用以及psycopg2的sql模块中的替代方法的选项。如何在未加引号的标识符中以注入安全的方式使用Python中的PostgreSQL?
补充道:我的困惑是因为我使用了"Public.abc"来表示SQL.IDENTIFIER,而在@Klin的回答中,我应该使用两个标识符。整理好后,我发现引号仅用于区分大小写(和/或使用点等其他符号)。
推荐答案
您应该区分两种不同的情况。如果要在区分大小写的标识符中使用大写字母,必须使用双引号。如果您只使用小写字母作为标识符,可以,但不必使用双引号。专家通常建议避免第一种情况。在第二种情况下,opecpg2自动添加的引号不是问题。
请注意,public.abc不是,它是包含两个标识符的表达式。因此,您应该这样使用它:
sql.SQL("select * from {}.{}").format(sql.Identifier(schema_name), sql.Identifier(table_name))
或此:
sql.SQL("select * from {}").format(sql.Identifier(schema_name, table_name))
AS(Perthe documentation):
可以将多个字符串传递给对象以表示限定的 名称,即以点分隔的标识符序列。
这篇关于不带引号的SQL.IDENTIFIER的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
				 沃梦达教程
				
			本文标题为:不带引号的SQL.IDENTIFIER
				
        
 
            
        基础教程推荐
             猜你喜欢
        
	     - 求两个直方图的卷积 2022-01-01
 - PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
 - Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
 - PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
 - 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
 - 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
 - 包装空间模型 2022-01-01
 - 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
 - 修改列表中的数据帧不起作用 2022-01-01
 - 在Python中从Azure BLOB存储中读取文件 2022-01-01
 
    	
    	
    	
    	
    	
    	
    	
    	
				
				
				
				