【问题标题】:PostgreSQL SELECT when integer unique - invalid input syntax整数唯一时的 PostgreSQL SELECT - 无效的输入语法
【发布时间】:2019-08-11 13:27:40
【问题描述】:
  cur.execute("""SELECT  name, number 
    FROM store
    WHERE number=%s OR name =%s""",
    (number, name))

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

整数的输入语法无效

【问题讨论】:

  • 字符串文字需要用单引号引起来。
  • 你应该使用参数,而不是修改字符串!
  • @unutbu 它对我不起作用
  • 另请注意,invalid input syntax for integer error may occur 如果将空字符串作为参数而不是整数传递。如果这是问题所在,int(number) 将在 Python 端引发 ValueError。
  • @glaadys:我们想帮助你,但“它不起作用”永远不会提供足够的信息。相反,请告诉我们您看到的错误消息。

标签: sql postgresql tkinter


【解决方案1】:

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

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


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

【讨论】:

    猜你喜欢
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 2022-10-08
    相关资源
    最近更新 更多