1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
U
¸ý°dà;ã@sþddlmZddlmZddlmZddlmZddlmZddl    m
Z
dd    l    m Z d
d lm Z d
d lm Z d
d lmZd
dlmZd
dlmZd
dlmZd
dlmZd
dlmZd
dlmZGdd„dejƒZGdd„dejƒZGdd„dejƒZdZdS)é)ÚDecimalé)Útestingé)Úfixtures)Úeq_)Ú requirements)ÚColumn)ÚTableé)ÚDouble)ÚFloat)ÚIdentity)ÚInteger)Úliteral)Úliteral_column)ÚNumeric)Úselect)ÚStringc@sJeZdZdZdZdZedd„ƒZdd„Zdd    „Z    d
d „Z
e j d d „ƒZ dS)Ú LastrowidTestÚeachT)Zimplements_get_lastrowidÚautoincrement_insertc    CsTtd|tdtdddtdtdƒƒddtd    |tdtddd
tdtdƒƒdddS) NÚ
autoinc_pkÚidT©Ú primary_keyZtest_needs_autoincrementÚdataé2F)Zimplicit_returningÚ    manual_pk©rZ autoincrement©r
r    rr©ÚclsÚmetadata©r$ú[d:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\sqlalchemy/testing/suite/test_insert.pyÚ define_tabless&ÿ ù
 ûzLastrowidTest.define_tablescCs(| | ¡¡ ¡}t||jjdfƒdS©Nú    some data©ÚexecuterÚfirstrÚdialectZdefault_sequence_base©ÚselfÚtableÚconnÚrowr$r$r%Ú_assert_round_trip1sþþz LastrowidTest._assert_round_tripcCs.| |jj ¡tdd¡| |jj|¡dS©Nr(©r©r*ÚtablesrÚinsertÚdictr2©r.Ú
connectionr$r$r%Útest_autoincrement_on_insert;s
 
ÿz*LastrowidTest.test_autoincrement_on_insertcCsB| |jj ¡tdd¡}| t|jjjjƒ¡}t    |j
|fƒdSr3© r*r6rr7r8ÚscalarrÚcrrÚinserted_primary_key©r.r:ÚrÚpkr$r$r%Útest_last_inserted_idBs 
ÿz#LastrowidTest.test_last_inserted_idcCsD| |jj ¡tdd¡}|j}| t|jjjj    ƒ¡}t
||ƒdSr3) r*r6rr7r8Ú    lastrowidr=rr>rr)r.r:rArDrBr$r$r%Útest_native_lastrowid_autoincJs
ÿz+LastrowidTest.test_native_lastrowid_autoincN)Ú__name__Ú
__module__Ú __qualname__Ú run_deletesÚ __backend__Ú __requires__Ú classmethodr&r2r;rCrZdbapi_lastrowidrEr$r$r$r%rs
 
rc@seZdZdZdZedd„ƒZejdd„ƒZ    ej
dd„ƒZ ej d    d
„ƒZ ejd d „ƒZejd d„ƒZejdd„ƒZejdd„ƒZejdd„ƒZdS)ÚInsertBehaviorTestrTc Cs˜td|tdtdddtdtdƒƒƒtd|tdtddd    tdtdƒƒƒtd
|tdtdddtdtdƒƒtd td d tdttdtdtdƒd ƒdS)NrrTrrrrFrÚincludes_defaultsÚxé)ÚdefaultÚyÚ2)Útype_r)r
r    rrrrr!r$r$r%r&XsDÿ ú üÿ  ýøz InsertBehaviorTest.define_tablescCsR| |jj ¡tdd¡}|js$t‚|jr.t‚|js8t‚|j    rN| 
¡dksNt‚dSr3) r*r6rr7r8Ú _soft_closedÚAssertionErrorÚclosedÚ    is_insertÚ returns_rowsÚfetchone©r.r:rAr$r$r%Útest_autoclose_on_insertws
ÿ
 
 
z+InsertBehaviorTest.test_autoclose_on_insertcCsh| |jj ¡ ¡tdd¡}|js(t‚|jr2t‚|j    s<t‚|j
sFt‚t |  ¡dƒt |  ¡dgƒdS)Nr(r4r)r*r6rr7Zreturn_defaultsr8rUrVrWrXrYrrZÚkeysr[r$r$r%Ú+test_autoclose_on_insert_implicit_returning‡sû
 
 
 
z>InsertBehaviorTest.test_autoclose_on_insert_implicit_returningcCs`| |jj ¡¡}|jst‚|jr&t‚| |jj ¡ |jjj    j
dk¡¡}t t |  ¡ƒdƒdS)Nr©r*r6rr7rUrVrWrÚwherer>rrÚlenÚallr[r$r$r%Útest_empty_insert£s
 
 ÿÿz$InsertBehaviorTest.test_empty_insertcCsh| |jj ¡iiig¡}|js$t‚|jr.t‚| |jj ¡ |jjj    j
dk¡¡}t t |  ¡ƒdƒdS)Nr r_r[r$r$r%Útest_empty_insert_multiple°s
 
 ÿÿz-InsertBehaviorTest.test_empty_insert_multiplec Cs®|jj}|jj}| | ¡tdddtdddtdddg¡| | ¡ dt|jj    ƒ 
|jj      ddg¡¡¡¡}t |j d    ƒ| t|jj    ƒ |jj    ¡¡}t | ¡d
d gƒdS) NrÚdata1©rrrÚdata2r Údata3r4©N©rg©rh)r6rrr*r7r8Ú from_selectrr>rr`Úin_rr?Úorder_byÚfetchall©r.r:Z    src_tableZ
dest_tableÚresultr$r$r%Útest_insert_from_select_autoinc¾s,
 
 
ýþ     ÿþÿ     ÿz2InsertBehaviorTest.test_insert_from_select_autoincc Cs||jj}|jj}| | ¡ dt|jjƒ     |jj 
ddg¡¡¡¡}t |j dƒ| t|jjƒ  |jj¡¡}t | ¡gƒdS)Nr4rgrhri)r6rrr*r7rlrr>rr`rmrr?rnrorpr$r$r%Ú'test_insert_from_select_autoinc_no_rowsÛs ÿþÿ ÿz:InsertBehaviorTest.test_insert_from_select_autoinc_no_rowsc Csª|jj}| | ¡tdddtdddtdddg¡| | ¡ ¡ dt|jj    d|jj
ƒ  |jj
  ddg¡¡¡¡t | t|jj
ƒ |jj
¡¡ ¡d    d
d
d d gƒdS) Nrrerfrrgr rhrP)rerjrk)r6rr*r7r8Úinlinerlrr>rrr`rmrrnro©r.r:r/r$r$r%Útest_insert_from_selectðs,
 
 
ýþ     ÿüÿ ÿ üz*InsertBehaviorTest.test_insert_from_selectc Cs¬|jj}| | ¡tdddtdddtdddg¡| | ¡ ¡ dt|jj    d|jj
ƒ  |jj
  ddg¡¡¡¡t | t|ƒ |jj
|jj    ¡¡ ¡d    d
d d d gƒdS)Nrrerfrrgr rhrP)rrerPé)rrgrPrw)érgrPrw)r rhrPrw)érhrPrw)r6rNr*r7r8rtrlrr>rrr`rmrrnrorur$r$r%Ú%test_insert_from_select_with_defaultss6
 
 
ýþ     ÿüÿ ÿûüz8InsertBehaviorTest.test_insert_from_select_with_defaultsN)rFrGrHrIrJrLr&rrr\Úinsert_returningr^Z empty_insertsrcZempty_inserts_executemanyrdZinsert_from_selectrrrsrvrzr$r$r$r%rMTs(
 
 
 
 
 
 
 
rMc @súeZdZdZdZdZdd„Zedd„ƒZe    j
dd    „ƒZ d
d „Z d d „Z dd„Ze    jdd„ƒZejeƒddfedƒddejjfeƒddfedƒddejjfeddddddejjfeddddedƒdfdde dddg¡e dddg¡dd „ƒƒƒZd!S)"Ú ReturningTestr)r{rTcCs(| | ¡¡ ¡}t||jjdfƒdSr'r)r-r$r$r%r28sþþz ReturningTest._assert_round_tripc    Cs(td|tdtdddtdtdƒƒƒdS)NrrTrrrr r!r$r$r%r&Bsÿ úzReturningTest.define_tablescCsT|jj}| | ¡ |jj¡tdd¡}| ¡d}|     t
|jjƒ¡}t ||ƒdS©Nr(r4r© r6rr*r7Ú    returningr>rr8r+r=rr©r.r:r/rArBZ
fetched_pkr$r$r%Ú%test_explicit_returning_pk_autocommitMsÿ z3ReturningTest.test_explicit_returning_pk_autocommitcCsT|jj}| | ¡ |jj¡tdd¡}| ¡d}|     t
|jjƒ¡}t ||ƒdSr}r~r€r$r$r%Ú(test_explicit_returning_pk_no_autocommitWsÿ z6ReturningTest.test_explicit_returning_pk_no_autocommitcCs.| |jj ¡tdd¡| |jj|¡dSr3r5r9r$r$r%Ú/test_autoincrement_on_insert_implicit_returningas
 
ÿz=ReturningTest.test_autoincrement_on_insert_implicit_returningcCsB| |jj ¡tdd¡}| t|jjjjƒ¡}t    |j
|fƒdSr3r<r@r$r$r%Ú(test_last_inserted_id_implicit_returninghs 
ÿz6ReturningTest.test_last_inserted_id_implicit_returningc    Csp| |jj ¡ |jjjj¡ddiddiddiddiddig¡}| ¡}| t|jjjjƒ¡}t    || ¡ƒdS)NrÚd1Zd2Zd3Zd4Zd5)
r*r6rr7rr>rrbrr)r.r:rAZrallZpksr$r$r%Útest_insertmanyvalues_returningps 
ÿûü z-ReturningTest.test_insertmanyvalues_returninggxXM|Z!@é5g_ÎQ!@Fryéé )Z    precisionZscaleZ    asdecimalz    8.5514716ztype_,value,do_rounding)ÚargnamesÚsort_by_parameter_orderÚ multiple_rowsc     std|tdttƒddtd|ƒƒ}| |¡| | ¡j|jj    |jj
t |ƒd|rh‡fdd„t d    ƒDƒndˆi¡}    |r‚t d
d ƒ}
n
t d
d ƒ}
|rÞt d d„|    Dƒ‡fdd„|
Dƒƒt dd„| t|jj
ƒ¡Dƒtˆdƒhƒn:t t|    ƒ‡fdd„|
Dƒƒt t| t|jj
ƒ¡ƒˆhƒdS)z¯test #9701.
 
        this tests insertmanyvalues as well as decimal / floating point
        RETURNING types
 
        TODO: this might be better in suite/test_types?
 
        ÚtrT)rÚvalue)r‹csg|] }dˆi‘qS©rŽr$)Ú.0Úirr$r%Ú
<listcomp>Äsz6ReturningTest.test_insert_w_floats.<locals>.<listcomp>é
ré rcSsh|]\}}|t|dƒf’qS©rP©Úround)rÚid_Úval_r$r$r%Ú    <setcomp>Øsz5ReturningTest.test_insert_w_floats.<locals>.<setcomp>csh|]}|tˆdƒf’qSr•r–©rr˜rr$r%ršÙscSsh|]}t|dƒ’qSr•r–)rr™r$r$r%ršÝsÿrPcsh|] }|ˆf’qSr$r$r›rr$r%ršæsN)r
r    rrÚcreater*r7rr>rrŽÚboolÚrangerZscalarsrr—Úset) r.r:r#r‹rTrŽZ do_roundingrŒrrqZi_ranger$rr%Útest_insert_w_floats„sN1ü
ýÿø  
 
 þþ
ûþþz"ReturningTest.test_insert_w_floatsN)rFrGrHZrun_create_tablesrKrJr2rLr&rZfetch_rows_post_commitrr‚rƒr„Zinsert_executemany_returningr†rÚ combinationsr ÚrequiresZ-float_or_double_precision_behaves_genericallyr rZliteral_float_coercionrZ    variationr r$r$r$r%r|3sP
 
 
 
    
 
 
ü
ü ü ýær|)rrMr|N)ÚdecimalrÚrrZ
assertionsrÚconfigrZschemar    r
r r rrrrrrrZ
TablesTestrrMr|Ú__all__r$r$r$r%Ú<module>s*                >`=