Creating tons of snowflake database users is always tedious work and dependency on DBA or Cloud DBA so in order eliminate this we need to create python scripts with set of arguments to execute Snowflake Database Queries. Moreover it is easy to integrate to self service tools like Jenkins, Rundeck or User Management tools
## Date : 04/18/2021
## Version : v1
## Author : Sandeep Reddy
## Purpose : To create snowflake user using python script by passing arguments. goal is to integrate this self-service tools
## Usage : python cr_usernsf.py email lanid role warehouse database comments
## Example : python cr_usernsf.py youremail@deeds.com RL_DBA_ROLE WH_DBA_SM_XS DBA1 CHRWELL_TICKET
import os
import snowflake.connector
from snowflake.connector.errors import DatabaseError, ProgrammingError
import sys
sys.tracebacklimit=0
#userid = sys.argv[1];
sql = "call dba1.db_users.create_user('"+sys.argv[1]+"','"+sys.argv[2]+"','"+sys.argv[3]+"','"+sys.argv[4]+"','"+sys.argv[5]+"','"+sys.argv[6]+"');"
#print (sql)
#exit()
if __name__ == '__main__':
try:
con = snowflake.connector.connect(
user='D',
password=,
account='us-east-1',
warehouse='WH_DBA_SM_XS',
database='DBA1',
schema='DB_USERS',
role='RL_DBA_ROLE' # <-------- This is correct
)
except DatabaseError as db_ex:
if db_ex.errno == 250001:
print(f"Invalid username/password, please re-enter username and password...")
# code for user to re-enter username & pass
else:
raise
except Exception as ex:
# Log this
print(f"Execution error: {ex}")
raise
else:
try:
print ("Executing this query:", sql +"in Snowflake Database" )
results = con.cursor().execute(sql).fetchall()
print(results)
except con.ProgrammingError as e:
print('SQL Execution Error: {0}'.format(e.msg))
print('Snowflake Query Id: {0}'.format(e.sfqid))
print('Error Number: {0}'.format(e.errno))
print('SQL State: {0}'.format(e.sqlstate))
raise
finally:
con.close()
Script Execution
python cr_usernsf.py python cr_usernsf.py youremail@deeds.com RL_DBA_ROLE WH_DBA_SM_XS DBA1 CHR12345
Executing this query: call dba1.db_users.create_user(python cr_usernsf.py youremail@deeds.com RL_DBA_ROLE WH_DBA_SM_XS DBA1 CHRWELL_TICKET);in Snowflake Database
SQL Execution Error: 002002 (42710): Execution error in store procedure CREATE_USER:
Executed Successfully
Leave a comment