7
7
from datetime import date , datetime , time
8
8
from functools import partial
9
9
import re
10
- from typing import Iterator , Optional , Union , overload
10
+ from typing import Iterator , List , Optional , Union , overload
11
11
import warnings
12
12
13
13
import numpy as np
@@ -1455,9 +1455,22 @@ def drop_table(self, table_name, schema=None):
1455
1455
self .get_table (table_name , schema ).drop ()
1456
1456
self .meta .clear ()
1457
1457
1458
- def _create_sql_schema (self , frame , table_name , keys = None , dtype = None ):
1458
+ def _create_sql_schema (
1459
+ self ,
1460
+ frame : DataFrame ,
1461
+ table_name : str ,
1462
+ keys : Optional [List [str ]] = None ,
1463
+ dtype : Optional [dict ] = None ,
1464
+ schema : Optional [str ] = None ,
1465
+ ):
1459
1466
table = SQLTable (
1460
- table_name , self , frame = frame , index = False , keys = keys , dtype = dtype
1467
+ table_name ,
1468
+ self ,
1469
+ frame = frame ,
1470
+ index = False ,
1471
+ keys = keys ,
1472
+ dtype = dtype ,
1473
+ schema = schema ,
1461
1474
)
1462
1475
return str (table .sql_schema ())
1463
1476
@@ -1588,9 +1601,13 @@ def _create_table_setup(self):
1588
1601
create_tbl_stmts .append (
1589
1602
f"CONSTRAINT { self .name } _pk PRIMARY KEY ({ cnames_br } )"
1590
1603
)
1591
-
1604
+ if self .schema :
1605
+ schema_name = self .schema + "."
1606
+ else :
1607
+ schema_name = ""
1592
1608
create_stmts = [
1593
1609
"CREATE TABLE "
1610
+ + schema_name
1594
1611
+ escape (self .name )
1595
1612
+ " (\n "
1596
1613
+ ",\n " .join (create_tbl_stmts )
@@ -1845,14 +1862,20 @@ def drop_table(self, name, schema=None):
1845
1862
drop_sql = f"DROP TABLE { _get_valid_sqlite_name (name )} "
1846
1863
self .execute (drop_sql )
1847
1864
1848
- def _create_sql_schema (self , frame , table_name , keys = None , dtype = None ):
1865
+ def _create_sql_schema (self , frame , table_name , keys = None , dtype = None , schema = None ):
1849
1866
table = SQLiteTable (
1850
- table_name , self , frame = frame , index = False , keys = keys , dtype = dtype
1867
+ table_name ,
1868
+ self ,
1869
+ frame = frame ,
1870
+ index = False ,
1871
+ keys = keys ,
1872
+ dtype = dtype ,
1873
+ schema = schema ,
1851
1874
)
1852
1875
return str (table .sql_schema ())
1853
1876
1854
1877
1855
- def get_schema (frame , name , keys = None , con = None , dtype = None ):
1878
+ def get_schema (frame , name , keys = None , con = None , dtype = None , schema = None ):
1856
1879
"""
1857
1880
Get the SQL db table schema for the given frame.
1858
1881
@@ -1870,7 +1893,12 @@ def get_schema(frame, name, keys=None, con=None, dtype=None):
1870
1893
dtype : dict of column name to SQL type, default None
1871
1894
Optional specifying the datatype for columns. The SQL type should
1872
1895
be a SQLAlchemy type, or a string for sqlite3 fallback connection.
1896
+ schema: str, default: None
1897
+ Optional specifying the schema to be used in creating the table.
1873
1898
1899
+ .. versionadded:: 1.2.0
1874
1900
"""
1875
1901
pandas_sql = pandasSQL_builder (con = con )
1876
- return pandas_sql ._create_sql_schema (frame , name , keys = keys , dtype = dtype )
1902
+ return pandas_sql ._create_sql_schema (
1903
+ frame , name , keys = keys , dtype = dtype , schema = schema
1904
+ )
0 commit comments