postgresql 如何在psycopg2中生成无效插入条件警告?

s5a0g9ez  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(2)|浏览(123)

我有一个表myuser,其中有两列(id serial primary,username varchar(20)unique not null)。我正在尝试做一个Tkinter gui,它从表单中获取“username”并将其插入postgres表myuser中。
我想生成一个警告时,“用户名”字段是空的(或任何其他无效的请求)在图形用户界面。怎么办?在psycopg错误列表中找不到任何合适的答案。
我尝试了下面的方法,但是如果我将gui中的用户名字段保持为空,我不会看到任何警告,并且程序运行时没有错误。我期望看到一个带有if条件的警告。
此外,如果有其他类型的无效(> 20个字符),我的解决方案将不起作用。那么,做这件事的最好方法是什么呢?

name = namefield.get() 
try:
    c.execute('''INSERT INTO myuser (username)
        VALUES (%s)''', (name,)
        )
    if name == None:
       print('Please insert a valid username')
    
except psycopg2.IntegrityError:
   conn.rollback()
else:
   conn.commit()

字符串
非常感谢您的帮助!

q35jwt9p

q35jwt9p1#

在后端进行检查。检查用户名的空值并显示正确的提示。
大概是这样的:

if not name://i.e., if null
     messagebox.showwarning('Warning', 'Please insert a valid username')
 else:
     //insert to database

字符串

xcitsw88

xcitsw882#

在Python中检查两个案例,然后尝试执行SQL查询。

name = namefield.get() 
if not name or len(name) > 20:
    print('Please insert a valid username')
else:
    try:
        c.execute('''INSERT INTO myuser (username) VALUES (%s)''', (name,))
    except psycopg2.IntegrityError:
        conn.rollback()
    else:
        conn.commit()

字符串

相关问题