Skip to content

Commit f2ccf87

Browse files
author
Mmoncadaisla
committed
Add cartodbfy step for create_table_from_query and copy_table functions
1 parent 3f92d73 commit f2ccf87

File tree

1 file changed

+23
-5
lines changed

1 file changed

+23
-5
lines changed

cartoframes/io/carto.py

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
from 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
1010
from ..utils.geom_utils import is_reprojection_needed, reproject, has_geometry, set_geometry
1111
from ..utils.logger import log
1212
from ..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

Comments
 (0)