77from datetime import date , datetime , time
88from functools import partial
99import re
10- from typing import Iterator , Optional , Union , overload
10+ from typing import Iterator , List , Optional , Union , overload
1111import warnings
1212
1313import numpy as np
@@ -1455,9 +1455,22 @@ def drop_table(self, table_name, schema=None):
14551455 self .get_table (table_name , schema ).drop ()
14561456 self .meta .clear ()
14571457
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+ ):
14591466 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 ,
14611474 )
14621475 return str (table .sql_schema ())
14631476
@@ -1588,9 +1601,13 @@ def _create_table_setup(self):
15881601 create_tbl_stmts .append (
15891602 f"CONSTRAINT { self .name } _pk PRIMARY KEY ({ cnames_br } )"
15901603 )
1591-
1604+ if self .schema :
1605+ schema_name = self .schema + "."
1606+ else :
1607+ schema_name = ""
15921608 create_stmts = [
15931609 "CREATE TABLE "
1610+ + schema_name
15941611 + escape (self .name )
15951612 + " (\n "
15961613 + ",\n " .join (create_tbl_stmts )
@@ -1845,14 +1862,20 @@ def drop_table(self, name, schema=None):
18451862 drop_sql = f"DROP TABLE { _get_valid_sqlite_name (name )} "
18461863 self .execute (drop_sql )
18471864
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 ):
18491866 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 ,
18511874 )
18521875 return str (table .sql_schema ())
18531876
18541877
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 ):
18561879 """
18571880 Get the SQL db table schema for the given frame.
18581881
@@ -1870,7 +1893,12 @@ def get_schema(frame, name, keys=None, con=None, dtype=None):
18701893 dtype : dict of column name to SQL type, default None
18711894 Optional specifying the datatype for columns. The SQL type should
18721895 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.
18731898
1899+ .. versionadded:: 1.2.0
18741900 """
18751901 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