66
77from carto .exceptions import CartoException
88
9- from .managers .context_manager import ContextManager , _compute_copy_data , get_dataframe_columns_info
9+ from .managers .context_manager import ContextManager , _compute_copy_data , get_dataframe_columns_info , _cartodbfy_query
1010from ..utils .geom_utils import is_reprojection_needed , reproject , has_geometry , set_geometry
1111from ..utils .logger import log
1212from ..utils .utils import is_valid_str , is_sql_query
@@ -275,7 +275,7 @@ def rename_table(table_name, new_table_name, credentials=None, if_exists='fail',
275275 log .info ('Success! Table "{0}" renamed to table "{1}" correctly' .format (table_name , new_table_name ))
276276
277277
278- def copy_table (table_name , new_table_name , credentials = None , if_exists = 'fail' , log_enabled = True ):
278+ def copy_table (table_name , new_table_name , credentials = None , if_exists = 'fail' , log_enabled = True , cartodbfy = True ):
279279 """Copy a table into a new table in the CARTO account.
280280
281281 Args:
@@ -285,7 +285,8 @@ def copy_table(table_name, new_table_name, credentials=None, if_exists='fail', l
285285 instance of Credentials (username, api_key, etc).
286286 if_exists (str, optional): 'fail', 'replace', 'append'. Default is 'fail'.
287287 log_enabled (bool, optional): enable the logging mechanism. Default is True.
288-
288+ cartodbfy (bool, optional): convert the table to CARTO format. Default True. More info
289+ `here <https://carto.com/developers/sql-api/guides/creating-tables/#create-tables>`.
289290 Raises:
290291 ValueError: if the table names provided are wrong or the if_exists param is not valid.
291292
@@ -305,11 +306,22 @@ def copy_table(table_name, new_table_name, credentials=None, if_exists='fail', l
305306 context_manager = ContextManager (credentials )
306307 new_table_name = context_manager .create_table_from_query (query , new_table_name , if_exists )
307308
309+ if cartodbfy is True :
310+ schema = context_manager .get_schema ()
311+ cartodbfy_query = _cartodbfy_query (new_table_name , schema )
312+ context_manager .execute_long_running_query (cartodbfy_query )
313+
308314 if log_enabled :
309315 log .info ('Success! Table "{0}" copied to table "{1}" correctly' .format (table_name , new_table_name ))
310316
311317
312- def create_table_from_query (query , new_table_name , credentials = None , if_exists = 'fail' , log_enabled = True ):
318+ def create_table_from_query (
319+ query ,
320+ new_table_name ,
321+ credentials = None ,
322+ if_exists = 'fail' ,
323+ log_enabled = True ,
324+ cartodbfy = True ):
313325 """Create a new table from an SQL query in the CARTO account.
314326
315327 Args:
@@ -319,7 +331,8 @@ def create_table_from_query(query, new_table_name, credentials=None, if_exists='
319331 instance of Credentials (username, api_key, etc).
320332 if_exists (str, optional): 'fail', 'replace', 'append'. Default is 'fail'.
321333 log_enabled (bool, optional): enable the logging mechanism. Default is True.
322-
334+ cartodbfy (bool, optional): convert the table to CARTO format. Default True. More info
335+ `here <https://carto.com/developers/sql-api/guides/creating-tables/#create-tables>`.
323336 Raises:
324337 ValueError: if the query or table name provided is wrong or the if_exists param is not valid.
325338
@@ -337,6 +350,11 @@ def create_table_from_query(query, new_table_name, credentials=None, if_exists='
337350 context_manager = ContextManager (credentials )
338351 new_table_name = context_manager .create_table_from_query (query , new_table_name , if_exists )
339352
353+ if cartodbfy is True :
354+ schema = context_manager .get_schema ()
355+ cartodbfy_query = _cartodbfy_query (new_table_name , schema )
356+ context_manager .execute_long_running_query (cartodbfy_query )
357+
340358 if log_enabled :
341359 log .info ('Success! Table "{0}" created correctly' .format (new_table_name ))
342360
0 commit comments