整数唯一时的PostgreSQL SELECT-无效的输入语法

时间:2019-03-20 18:25:29

标签: sql postgresql tkinter

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

我的问题是数字是INTEGER UNIQUE,当我尝试按数字选择时,一切正常,但是如果我尝试按名称选择,则会收到错误消息:

  

整数的无效输入语法

1 个答案:

答案 0 :(得分:0)

听起来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.executeNone视为NULL


  

在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, ))