@@ -307,7 +307,7 @@ def create_user(
307
307
f"WITH LOGIN{ ' SUPERUSER' if admin else '' } ENCRYPTED PASSWORD '{ password } '"
308
308
)
309
309
if in_role :
310
- user_definition += f" IN ROLE \ "{ in_role } \" "
310
+ user_definition += f' IN ROLE "{ in_role } "'
311
311
if can_create_database :
312
312
user_definition += " CREATEDB"
313
313
if privileges :
@@ -1035,8 +1035,18 @@ def set_up_predefined_catalog_roles_function(self) -> None:
1035
1035
END LOOP;
1036
1036
END;
1037
1037
$$ LANGUAGE plpgsql security definer;"""
1038
+ connection = None
1038
1039
try :
1039
- for database in ["postgres" , "template1" ]:
1040
+ databases = []
1041
+ with self ._connect_to_database () as connection , connection .cursor () as cursor :
1042
+ cursor .execute ()
1043
+ cursor .execute ("SELECT datname FROM pg_database where datname <> 'template0';" )
1044
+ db = cursor .fetchone ()
1045
+ while db :
1046
+ databases .append (db [0 ])
1047
+ db = cursor .fetchone ()
1048
+
1049
+ for database in databases :
1040
1050
with self ._connect_to_database (
1041
1051
database = database
1042
1052
) as connection , connection .cursor () as cursor :
@@ -1052,6 +1062,9 @@ def set_up_predefined_catalog_roles_function(self) -> None:
1052
1062
except psycopg2 .Error as e :
1053
1063
logger .error (f"Failed to set up predefined catalog roles function: { e } " )
1054
1064
raise PostgreSQLCreatePredefinedRolesError () from e
1065
+ finally :
1066
+ if connection :
1067
+ connection .close ()
1055
1068
1056
1069
def update_user_password (
1057
1070
self , username : str , password : str , database_host : Optional [str ] = None
0 commit comments