python format 在sql中对 string 和 int 类型的变化详解大数据

今天在使用format拼sql语句时遇到一下问题:

其中数据库中first_16字段是text类型

>>> s = '12345' 
>>> q0 = "select nid from news_simhash where first_16={0}" 
>>> q1 = "select nid from news_simhash where first_16='{0}'" 
>>> from doc_process import get_postgredb_query 
>>> conn, cursor = get_postgredb_query() 
>>> cursor.execute(q0.format(s))  #出错 
Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
psycopg2.ProgrammingError: operator does not exist: text = integer 
>>> conn2, cursor2 = get_postgredb_query() 
>>> cursor2.execute(q1.format(s))  #正确执行

上述q0和q1执行format:

>>> q0.format(s) 
'select nid from news_simhash where first_16=12345' 
>>> q1.format(s) 
"select nid from news_simhash where first_16='12345'"

数据看中字段first_16是text类型,q0.format(s)出现text=int,执行出错; 所有像q1一样手动添加单引号是必须的.

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/9342.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论