首页 > 解决方案 > 整数唯一时的 PostgreSQL SELECT - 无效的输入语法

问题描述

  cur.execute("""SELECT  name, number 
    FROM store
    WHERE number=%s OR name =%s""",
    (number, name))

我的问题是数字是唯一的整数,当我尝试按数字选择时一切正常,但是如果我尝试按名称选择,我收到一个错误:

整数的无效输入语法

标签: sqlpostgresqltkinter

解决方案


听起来number有时不是整数,例如空字符串。number您可以在 Python 端通过分配给None任何时候int(number)无效来处理这个问题:

try:
    number = int(number)
except ValueError:
    number = None

cur.execute("""SELECT  name, number 
    FROM store
    WHERE number=%s OR name =%s""",
    (number, name))

cur.execute将处理NoneNULL.


在 GUI tkinter 中,我希望可以选择仅通过提供名称或编号来搜索我的数据库,而不是同时提供两者

如果您想按number(第一)或name(第二)搜索,但不要同时搜索,请使用

import psycopg2
try:
    cur.execute("""SELECT  name, number 
        FROM store
        WHERE number=%s""", (number, ))

except psycopg2.DataError:
    cur.execute("""SELECT  name, number 
        FROM store
        WHERE name=%s""", (name, ))

推荐阅读