Python Forum

Full Version: Pulling username from Tuple
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3
Hi,
Im connecting to a DB in AWS and want to check if a certain username is on the server

cursor.fecthall () copies the usernames and stores them as a tuple
Is there a way I can search for the username in the Tuple
user in userNames prints out the username 'support' but Im not sure the best way to then search for them
Ive tried a couple of options but none work for me. Being new to Python I thought Id ask on here

If I could search the tuple for a user called 'support' can anyone tell me how its done?

Im assuming fectchall () returns a Tuple although some docs say its a list
I get this returned

('mysql.infoschema', 'localhost')
('mysql.session', 'localhost')
('mysql.sys', 'localhost')
('admin', 'localhost')
('support', 'localhost')

Ive tried

for userName in users:
     if 'support' in users:
          print('name is there')
    else:
          print('user isnt here')
However that just returns the else statement even though the user is there





    
    connection = pymysql.connect(
    host=db_secrets['host'],
    user=db_secrets['username'],
    password=db_secrets['password'],
    database=db_secrets['dbname']
    )
    cursor = connection.cursor()
    logger.info("SUCCESS: Connection to RDS MySQL instance succeeded")
   
    
    sql_GetUser = "select user, host from mysql.user;"
    cursor.execute(sql_GetUser)
    logger.info("Got a list of users")
    users= cursor.fetchall ()
    print("User List:")
    for userName in users:
        print(userName)
        
    connection.close()
    print("The connection is closed")
    cursor.close()
    logger.info("Successfully closed the cursor")
(Oct-06-2022, 01:57 PM)pajd Wrote: [ -> ]Ive tried
for userName in users:
    if 'support' in users:
        print('name is there')
    else:
        print('user isnt here')
However that just returns the else statement even though the user is there

Untested, but...
With that for loop, it seems to me that userName is the object to test: if userName == 'support':
[/quote]

Untested, but...
With that for loop, it seems to me that userName is the object to test: if userName == 'support':
[/quote]

Didnt work with this

sql_GetUser = "select user, host from mysql.user;"
    cursor.execute(sql_GetUser)
    logger.info("Got a list of users")
    users= cursor.fetchall ()
    print("User List:")
    for userName in users:
        if userName == 'support':
            print('name is there')
        else:
            print('user isnt here')
Result was

User List:
user isnt here
user isnt here
user isnt here
user isnt here
user isnt here
user isnt here
user isnt here
user isnt here
user isnt here
user isnt here
user isnt here
What's the output of print(users)
No need to use a for loop. Use in.
if userName in users:
    print('name is there')
else:
    print('user isnt here')
print(users)
The ouput is a loop (7 lines) with all users in each line
(Oct-06-2022, 02:23 PM)deanhystad Wrote: [ -> ]No need to use a for loop. Use in.
if userName in users:
    print('name is there')
else:
    print('user isnt here')
If you want to use a for loop, you need to check all the names before printing 'user isn\'t here' (or "user isn't here").
for userName in users:
    if 'support' in users:
        print("name is there")
        break
else:   # This else is associated with the "for", not the "if".
    print("user isn't here")

I used this and still get the else result even though the username is in the list

    sql_GetUser = "select user from mysql.user;"
    cursor.execute(sql_GetUser)
    logger.info("Got a list of users")
    users= cursor.fetchall ()
    if 'support' in users:
        print('name is there')
    else:
        print('user isnt here')
and

for userName in users:

is invalid syntax
Okay; lets put it another way:

What's the output for...
for user in users:
    print(user)
(Oct-06-2022, 02:31 PM)rob101 Wrote: [ -> ]Okay; lets put it another way:

What's the output for...
for user in users:
    print(user)

It lists all the users


and the else gets returned by this

for user in users:
       print(user)
    if user == 'support':
        print("user is here")
    else:
        print("user is not here")
(Oct-06-2022, 02:36 PM)pajd Wrote: [ -> ]It lists all the users

Well in that case, there's no reason for if user == 'whatever': not to work.

users = ('bob','mike','admin','support')

for user in users:
    if user == 'support':
        print(f"user {user} found.")
Output:
user support found.
Pages: 1 2 3