@@ -64,61 +64,61 @@ func SQLite3BuildTypeConvFunc(queries []core.Query, body *builders.IndentStringB
6464 if _ , found := toConvert ["datetime.date" ]; found {
6565 body .WriteLine ("def _adapt_date(val: datetime.date) -> str:" )
6666 body .WriteIndentedLine (1 , "return val.isoformat()" )
67- body .NewLine ( )
67+ body .NNewLine ( 2 )
6868 adapters = append (adapters , "sqlite3.register_adapter(datetime.date, _adapt_date)" )
6969 body .WriteLine ("def _convert_date(val: bytes) -> datetime.date:" )
7070 if conf .Speedups {
7171 body .WriteIndentedLine (1 , "return ciso8601.parse_datetime(val.decode()).date()" )
7272 } else {
7373 body .WriteIndentedLine (1 , "return datetime.date.fromisoformat(val.decode())" )
7474 }
75- body .NewLine ( )
75+ body .NNewLine ( 2 )
7676 converters = append (converters , `sqlite3.register_converter("date", _convert_date)` )
7777 }
7878 if _ , found := toConvert ["decimal.Decimal" ]; found {
7979 body .WriteLine ("def _adapt_decimal(val: decimal.Decimal) -> str:" )
8080 body .WriteIndentedLine (1 , "return str(val)" )
81- body .NewLine ( )
81+ body .NNewLine ( 2 )
8282 adapters = append (adapters , "sqlite3.register_adapter(decimal.Decimal, _adapt_decimal)" )
8383 body .WriteLine ("def _convert_decimal(val: bytes) -> decimal.Decimal:" )
8484 body .WriteIndentedLine (1 , "return decimal.Decimal(val.decode())" )
85- body .NewLine ( )
85+ body .NNewLine ( 2 )
8686 converters = append (converters , `sqlite3.register_converter("decimal", _convert_decimal)` )
8787 }
8888 if _ , found := toConvert ["datetime.datetime" ]; found {
8989 body .WriteLine ("def _adapt_datetime(val: datetime.datetime) -> str:" )
9090 body .WriteIndentedLine (1 , "return val.isoformat()" )
91- body .NewLine ( )
91+ body .NNewLine ( 2 )
9292 adapters = append (adapters , "sqlite3.register_adapter(datetime.datetime, _adapt_datetime)" )
9393 body .WriteLine ("def _convert_datetime(val: bytes) -> datetime.datetime:" )
9494 if conf .Speedups {
9595 body .WriteIndentedLine (1 , "return ciso8601.parse_datetime(val.decode())" )
9696 } else {
9797 body .WriteIndentedLine (1 , "return datetime.datetime.fromisoformat(val.decode())" )
9898 }
99- body .NewLine ( )
99+ body .NNewLine ( 2 )
100100 converters = append (converters , `sqlite3.register_converter("datetime", _convert_datetime)` )
101101 converters = append (converters , `sqlite3.register_converter("timestamp", _convert_datetime)` )
102102 }
103103 if _ , found := toConvert ["bool" ]; found {
104104 body .WriteLine ("def _adapt_bool(val: bool) -> int:" )
105105 body .WriteIndentedLine (1 , "return int(val)" )
106- body .NewLine ( )
106+ body .NNewLine ( 2 )
107107 adapters = append (adapters , "sqlite3.register_adapter(bool, _adapt_bool)" )
108108 body .WriteLine ("def _convert_bool(val: bytes) -> bool:" )
109109 body .WriteIndentedLine (1 , "return bool(int(val))" )
110- body .NewLine ( )
110+ body .NNewLine ( 2 )
111111 converters = append (converters , `sqlite3.register_converter("bool", _convert_bool)` )
112112 converters = append (converters , `sqlite3.register_converter("boolean", _convert_bool)` )
113113 }
114114 if _ , found := toConvert ["memoryview" ]; found {
115115 body .WriteLine ("def _adapt_memoryview(val: memoryview) -> bytes:" )
116116 body .WriteIndentedLine (1 , "return val.tobytes()" )
117- body .NewLine ( )
117+ body .NNewLine ( 2 )
118118 adapters = append (adapters , "sqlite3.register_adapter(memoryview, _adapt_memoryview)" )
119119 body .WriteLine ("def _convert_memoryview(val: bytes) -> memoryview:" )
120120 body .WriteIndentedLine (1 , "return memoryview(val)" )
121- body .NewLine ( )
121+ body .NNewLine ( 2 )
122122 converters = append (converters , `sqlite3.register_converter("blob", _convert_memoryview)` )
123123 }
124124 for i , line := range adapters {
@@ -237,9 +237,11 @@ func SQLite3BuildPyQueryFunc(query *core.Query, body *builders.IndentStringBuild
237237 } else if query .Cmd == metadata .CmdMany {
238238 body .WriteLine (fmt .Sprintf (") -> QueryResults[%s]:" , retType .Type ))
239239 body .WriteQueryFunctionDocstring (indentLevel + 1 , query , docstringConnType , args , retType )
240- body .WriteIndentedLine (indentLevel + 1 , fmt .Sprintf ("def _decode_hook(row: %s) -> %s:" , Sqlite3Result , retType .Type ))
241-
242- if query .Ret .IsStruct () {
240+ decode_hook := "_decode_hook"
241+ if ! query .Ret .IsStruct () {
242+ decode_hook = "operator.itemgetter(0)"
243+ } else {
244+ body .WriteIndentedLine (indentLevel + 1 , fmt .Sprintf ("def _decode_hook(row: %s) -> %s:" , Sqlite3Result , retType .Type ))
243245 body .WriteIndentedString (indentLevel + 2 , fmt .Sprintf ("return %s(" , retType .Type ))
244246 i := 0
245247 for _ , col := range query .Ret .Table .Columns {
@@ -260,10 +262,8 @@ func SQLite3BuildPyQueryFunc(query *core.Query, body *builders.IndentStringBuild
260262 }
261263 }
262264 body .WriteLine (")" )
263- } else {
264- body .WriteIndentedLine (indentLevel + 2 , "return row[0]" )
265265 }
266- body .WriteIndentedString (indentLevel + 1 , fmt .Sprintf ("return QueryResults[%s](%s, %s, _decode_hook " , retType .Type , conn , query .ConstantName ))
266+ body .WriteIndentedString (indentLevel + 1 , fmt .Sprintf ("return QueryResults[%s](%s, %s, %s " , retType .Type , conn , query .ConstantName , decode_hook ))
267267 params := ""
268268 for i , arg := range query .Args {
269269 if ! arg .IsEmpty () {
@@ -307,5 +307,5 @@ func sqlite3WriteParams(query *core.Query, body *builders.IndentStringBuilder) {
307307 }
308308 }
309309 }
310- body .WriteString ("," + params + ")" )
310+ body .WriteString (", " + params + ")" )
311311}
0 commit comments