PostgreSQL SELECT, когда целое число уникально - неверный синтаксис ввода - PullRequest
0 голосов
/ 20 марта 2019
  cur.execute("""SELECT  name, number 
    FROM store
    WHERE number=%s OR name =%s""",
    (number, name))

Моя проблема в том, что номер INTEGER UNIQUE, и когда я пытаюсь выбрать по номеру, все в порядке, но если я пытаюсь выбрать по имени, я получаю сообщение об ошибке:

неверный синтаксис ввода для целого числа

1 Ответ

0 голосов
/ 20 марта 2019

Звучит так, будто number иногда не является целым числом, например, пустой строкой.Вы можете справиться с этим на стороне Python, назначив number на 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 будет обрабатывать None как NULL.


в графическом интерфейсе 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, ))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...