@@ -834,7 +834,11 @@ def _create_table_setup(self):
834834 for name , typ , is_index in column_names_and_types ]
835835
836836 if self .keys is not None :
837- pkc = PrimaryKeyConstraint (self .keys , name = self .name + '_pk' )
837+ if not com .is_list_like (self .keys ):
838+ keys = [self .keys ]
839+ else :
840+ keys = self .keys
841+ pkc = PrimaryKeyConstraint (* keys , name = self .name + '_pk' )
838842 columns .append (pkc )
839843
840844 schema = self .schema or self .pd_sql .meta .schema
@@ -899,8 +903,8 @@ def _harmonize_columns(self, parse_dates=None):
899903
900904 def _get_notnull_col_dtype (self , col ):
901905 """
902- Infer datatype of the Series col. In case the dtype of col is 'object'
903- and it contains NA values, this infers the datatype of the not-NA
906+ Infer datatype of the Series col. In case the dtype of col is 'object'
907+ and it contains NA values, this infers the datatype of the not-NA
904908 values. Needed for inserting typed data containing NULLs, GH8778.
905909 """
906910 col_for_inference = col
@@ -1272,7 +1276,7 @@ def _get_unicode_name(name):
12721276 return uname
12731277
12741278def _get_valid_mysql_name (name ):
1275- # Filter for unquoted identifiers
1279+ # Filter for unquoted identifiers
12761280 # See http://dev.mysql.com/doc/refman/5.0/en/identifiers.html
12771281 uname = _get_unicode_name (name )
12781282 if not len (uname ):
@@ -1293,7 +1297,7 @@ def _get_valid_sqlite_name(name):
12931297 # Ensure the string does not include any NUL characters.
12941298 # Replace all " with "".
12951299 # Wrap the entire thing in double quotes.
1296-
1300+
12971301 uname = _get_unicode_name (name )
12981302 if not len (uname ):
12991303 raise ValueError ("Empty table or column name specified" )
@@ -1377,7 +1381,11 @@ def _create_table_setup(self):
13771381 for cname , ctype , _ in column_names_and_types ]
13781382
13791383 if self .keys is not None and len (self .keys ):
1380- cnames_br = "," .join ([escape (c ) for c in self .keys ])
1384+ if not com .is_list_like (self .keys ):
1385+ keys = [self .keys ]
1386+ else :
1387+ keys = self .keys
1388+ cnames_br = ", " .join ([escape (c ) for c in keys ])
13811389 create_tbl_stmts .append (
13821390 "CONSTRAINT {tbl}_pk PRIMARY KEY ({cnames_br})" .format (
13831391 tbl = self .name , cnames_br = cnames_br ))
@@ -1391,7 +1399,7 @@ def _create_table_setup(self):
13911399 cnames = "_" .join (ix_cols )
13921400 cnames_br = "," .join ([escape (c ) for c in ix_cols ])
13931401 create_stmts .append (
1394- "CREATE INDEX " + escape ("ix_" + self .name + "_" + cnames ) +
1402+ "CREATE INDEX " + escape ("ix_" + self .name + "_" + cnames ) +
13951403 "ON " + escape (self .name ) + " (" + cnames_br + ")" )
13961404
13971405 return create_stmts
@@ -1416,7 +1424,7 @@ def _sql_type_name(self, col):
14161424
14171425 elif col_type == "complex" :
14181426 raise ValueError ('Complex datatypes not supported' )
1419-
1427+
14201428 if col_type not in _SQL_TYPES :
14211429 col_type = "string"
14221430
0 commit comments