Skip to content

Commit 980de86

Browse files
arw2019luckyvs1
authored andcommitted
TYP: pandas/io/sql.py (easy: bool/str) (pandas-dev#38537)
1 parent bdc6f66 commit 980de86

File tree

1 file changed

+81
-47
lines changed

1 file changed

+81
-47
lines changed

pandas/io/sql.py

+81-47
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from datetime import date, datetime, time
88
from functools import partial
99
import re
10-
from typing import Iterator, List, Optional, Union, overload
10+
from typing import Any, Dict, Iterator, List, Optional, Sequence, Union, overload
1111
import warnings
1212

1313
import numpy as np
@@ -77,7 +77,9 @@ def _process_parse_dates_argument(parse_dates):
7777
return parse_dates
7878

7979

80-
def _handle_date_column(col, utc=None, format=None):
80+
def _handle_date_column(
81+
col, utc: Optional[bool] = None, format: Optional[Union[str, Dict[str, Any]]] = None
82+
):
8183
if isinstance(format, dict):
8284
# GH35185 Allow custom error values in parse_dates argument of
8385
# read_sql like functions.
@@ -124,7 +126,13 @@ def _parse_date_columns(data_frame, parse_dates):
124126
return data_frame
125127

126128

127-
def _wrap_result(data, columns, index_col=None, coerce_float=True, parse_dates=None):
129+
def _wrap_result(
130+
data,
131+
columns,
132+
index_col=None,
133+
coerce_float: bool = True,
134+
parse_dates=None,
135+
):
128136
"""Wrap result set of query in a DataFrame."""
129137
frame = DataFrame.from_records(data, columns=columns, coerce_float=coerce_float)
130138

@@ -197,11 +205,11 @@ def read_sql_table(
197205

198206

199207
def read_sql_table(
200-
table_name,
208+
table_name: str,
201209
con,
202-
schema=None,
203-
index_col=None,
204-
coerce_float=True,
210+
schema: Optional[str] = None,
211+
index_col: Optional[Union[str, Sequence[str]]] = None,
212+
coerce_float: bool = True,
205213
parse_dates=None,
206214
columns=None,
207215
chunksize: Optional[int] = None,
@@ -321,7 +329,7 @@ def read_sql_query(
321329
sql,
322330
con,
323331
index_col=None,
324-
coerce_float=True,
332+
coerce_float: bool = True,
325333
params=None,
326334
parse_dates=None,
327335
chunksize: Optional[int] = None,
@@ -420,8 +428,8 @@ def read_sql(
420428
def read_sql(
421429
sql,
422430
con,
423-
index_col=None,
424-
coerce_float=True,
431+
index_col: Optional[Union[str, Sequence[str]]] = None,
432+
coerce_float: bool = True,
425433
params=None,
426434
parse_dates=None,
427435
columns=None,
@@ -582,15 +590,15 @@ def read_sql(
582590

583591
def to_sql(
584592
frame,
585-
name,
593+
name: str,
586594
con,
587-
schema=None,
588-
if_exists="fail",
589-
index=True,
595+
schema: Optional[str] = None,
596+
if_exists: str = "fail",
597+
index: bool = True,
590598
index_label=None,
591-
chunksize=None,
599+
chunksize: Optional[int] = None,
592600
dtype=None,
593-
method=None,
601+
method: Optional[str] = None,
594602
) -> None:
595603
"""
596604
Write records stored in a DataFrame to a SQL database.
@@ -663,7 +671,7 @@ def to_sql(
663671
)
664672

665673

666-
def has_table(table_name, con, schema=None):
674+
def has_table(table_name: str, con, schema: Optional[str] = None):
667675
"""
668676
Check if DataBase has named table.
669677
@@ -708,7 +716,9 @@ def _engine_builder(con):
708716
return con
709717

710718

711-
def pandasSQL_builder(con, schema=None, meta=None, is_cursor=False):
719+
def pandasSQL_builder(
720+
con, schema: Optional[str] = None, meta=None, is_cursor: bool = False
721+
):
712722
"""
713723
Convenience function to return the correct PandasSQL subclass based on the
714724
provided parameters.
@@ -737,7 +747,7 @@ class SQLTable(PandasObject):
737747

738748
def __init__(
739749
self,
740-
name,
750+
name: str,
741751
pandas_sql_engine,
742752
frame=None,
743753
index=True,
@@ -795,7 +805,7 @@ def create(self):
795805
else:
796806
self._execute_create()
797807

798-
def _execute_insert(self, conn, keys, data_iter):
808+
def _execute_insert(self, conn, keys: List[str], data_iter):
799809
"""
800810
Execute SQL statement inserting data
801811
@@ -810,7 +820,7 @@ def _execute_insert(self, conn, keys, data_iter):
810820
data = [dict(zip(keys, row)) for row in data_iter]
811821
conn.execute(self.table.insert(), data)
812822

813-
def _execute_insert_multi(self, conn, keys, data_iter):
823+
def _execute_insert_multi(self, conn, keys: List[str], data_iter):
814824
"""
815825
Alternative to _execute_insert for DBs support multivalue INSERT.
816826
@@ -857,7 +867,7 @@ def insert_data(self):
857867

858868
return column_names, data_list
859869

860-
def insert(self, chunksize=None, method=None):
870+
def insert(self, chunksize: Optional[int] = None, method: Optional[str] = None):
861871

862872
# set insert method
863873
if method is None:
@@ -894,7 +904,12 @@ def insert(self, chunksize=None, method=None):
894904
exec_insert(conn, keys, chunk_iter)
895905

896906
def _query_iterator(
897-
self, result, chunksize, columns, coerce_float=True, parse_dates=None
907+
self,
908+
result,
909+
chunksize: Optional[str],
910+
columns,
911+
coerce_float: bool = True,
912+
parse_dates=None,
898913
):
899914
"""Return generator through chunked result set."""
900915
while True:
@@ -1203,7 +1218,7 @@ class SQLDatabase(PandasSQL):
12031218
12041219
"""
12051220

1206-
def __init__(self, engine, schema=None, meta=None):
1221+
def __init__(self, engine, schema: Optional[str] = None, meta=None):
12071222
self.connectable = engine
12081223
if not meta:
12091224
from sqlalchemy.schema import MetaData
@@ -1228,13 +1243,13 @@ def execute(self, *args, **kwargs):
12281243

12291244
def read_table(
12301245
self,
1231-
table_name,
1232-
index_col=None,
1233-
coerce_float=True,
1246+
table_name: str,
1247+
index_col: Optional[Union[str, Sequence[str]]] = None,
1248+
coerce_float: bool = True,
12341249
parse_dates=None,
12351250
columns=None,
1236-
schema=None,
1237-
chunksize=None,
1251+
schema: Optional[str] = None,
1252+
chunksize: Optional[int] = None,
12381253
):
12391254
"""
12401255
Read SQL database table into a DataFrame.
@@ -1288,7 +1303,12 @@ def read_table(
12881303

12891304
@staticmethod
12901305
def _query_iterator(
1291-
result, chunksize, columns, index_col=None, coerce_float=True, parse_dates=None
1306+
result,
1307+
chunksize: int,
1308+
columns,
1309+
index_col=None,
1310+
coerce_float=True,
1311+
parse_dates=None,
12921312
):
12931313
"""Return generator through chunked result set"""
12941314
while True:
@@ -1306,12 +1326,12 @@ def _query_iterator(
13061326

13071327
def read_query(
13081328
self,
1309-
sql,
1310-
index_col=None,
1311-
coerce_float=True,
1329+
sql: str,
1330+
index_col: Optional[str] = None,
1331+
coerce_float: bool = True,
13121332
parse_dates=None,
13131333
params=None,
1314-
chunksize=None,
1334+
chunksize: Optional[int] = None,
13151335
):
13161336
"""
13171337
Read SQL query into a DataFrame.
@@ -1490,12 +1510,12 @@ def to_sql(
14901510
def tables(self):
14911511
return self.meta.tables
14921512

1493-
def has_table(self, name, schema=None):
1513+
def has_table(self, name: str, schema: Optional[str] = None):
14941514
return self.connectable.run_callable(
14951515
self.connectable.dialect.has_table, name, schema or self.meta.schema
14961516
)
14971517

1498-
def get_table(self, table_name, schema=None):
1518+
def get_table(self, table_name: str, schema: Optional[str] = None):
14991519
schema = schema or self.meta.schema
15001520
if schema:
15011521
tbl = self.meta.tables.get(".".join([schema, table_name]))
@@ -1511,7 +1531,7 @@ def get_table(self, table_name, schema=None):
15111531

15121532
return tbl
15131533

1514-
def drop_table(self, table_name, schema=None):
1534+
def drop_table(self, table_name: str, schema: Optional[str] = None):
15151535
schema = schema or self.meta.schema
15161536
if self.has_table(table_name, schema):
15171537
self.meta.reflect(only=[table_name], schema=schema)
@@ -1608,7 +1628,7 @@ def _execute_create(self):
16081628
for stmt in self.table:
16091629
conn.execute(stmt)
16101630

1611-
def insert_statement(self, *, num_rows):
1631+
def insert_statement(self, *, num_rows: int):
16121632
names = list(map(str, self.frame.columns))
16131633
wld = "?" # wildcard char
16141634
escape = _get_valid_sqlite_name
@@ -1737,7 +1757,7 @@ class SQLiteDatabase(PandasSQL):
17371757
17381758
"""
17391759

1740-
def __init__(self, con, is_cursor=False):
1760+
def __init__(self, con, is_cursor: bool = False):
17411761
self.is_cursor = is_cursor
17421762
self.con = con
17431763

@@ -1775,7 +1795,12 @@ def execute(self, *args, **kwargs):
17751795

17761796
@staticmethod
17771797
def _query_iterator(
1778-
cursor, chunksize, columns, index_col=None, coerce_float=True, parse_dates=None
1798+
cursor,
1799+
chunksize: int,
1800+
columns,
1801+
index_col=None,
1802+
coerce_float: bool = True,
1803+
parse_dates=None,
17791804
):
17801805
"""Return generator through chunked result set"""
17811806
while True:
@@ -1798,10 +1823,10 @@ def read_query(
17981823
self,
17991824
sql,
18001825
index_col=None,
1801-
coerce_float=True,
1826+
coerce_float: bool = True,
18021827
params=None,
18031828
parse_dates=None,
1804-
chunksize=None,
1829+
chunksize: Optional[int] = None,
18051830
):
18061831

18071832
args = _convert_params(sql, params)
@@ -1908,7 +1933,7 @@ def to_sql(
19081933
table.create()
19091934
table.insert(chunksize, method)
19101935

1911-
def has_table(self, name, schema=None):
1936+
def has_table(self, name: str, schema: Optional[str] = None):
19121937
# TODO(wesm): unused?
19131938
# escape = _get_valid_sqlite_name
19141939
# esc_name = escape(name)
@@ -1918,14 +1943,21 @@ def has_table(self, name, schema=None):
19181943

19191944
return len(self.execute(query, [name]).fetchall()) > 0
19201945

1921-
def get_table(self, table_name, schema=None):
1946+
def get_table(self, table_name: str, schema: Optional[str] = None):
19221947
return None # not supported in fallback mode
19231948

1924-
def drop_table(self, name, schema=None):
1949+
def drop_table(self, name: str, schema: Optional[str] = None):
19251950
drop_sql = f"DROP TABLE {_get_valid_sqlite_name(name)}"
19261951
self.execute(drop_sql)
19271952

1928-
def _create_sql_schema(self, frame, table_name, keys=None, dtype=None, schema=None):
1953+
def _create_sql_schema(
1954+
self,
1955+
frame,
1956+
table_name: str,
1957+
keys=None,
1958+
dtype=None,
1959+
schema: Optional[str] = None,
1960+
):
19291961
table = SQLiteTable(
19301962
table_name,
19311963
self,
@@ -1938,7 +1970,9 @@ def _create_sql_schema(self, frame, table_name, keys=None, dtype=None, schema=No
19381970
return str(table.sql_schema())
19391971

19401972

1941-
def get_schema(frame, name, keys=None, con=None, dtype=None, schema=None):
1973+
def get_schema(
1974+
frame, name: str, keys=None, con=None, dtype=None, schema: Optional[str] = None
1975+
):
19421976
"""
19431977
Get the SQL db table schema for the given frame.
19441978

0 commit comments

Comments
 (0)