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
U
¸ý°dã@stddlmZddlmZddlmZddlmZddlmZddlmZddlm    Z    dd    lm
Z
dd
lm Z dd l m Z dd l mZdd l mZddl mZddl mZddl mZddl mZddl mZddl mZe d¡dd„ƒZe  d¡dd„ƒZe d¡dd„ƒZdd„Ze d¡dd„ƒZe d¡dd „ƒZe d¡d!d"„ƒZe d¡d#d$„ƒZe d¡d%d&„ƒZd'S)(é)Úinspect)ÚIntegeré)Ú create_engine)Úexc)ÚColumn)ÚDropConstraint)ÚForeignKeyConstraint)ÚMetaData)ÚTable)Ú    create_db)Ú"drop_all_schema_objects_pre_tables)Údrop_db)Úgenerate_driver_url)Úget_temp_table_name)Úlog)Únormalize_sequence)Ú run_reap_dbs)Útemp_table_keyword_argsZmssqlcCsl| ¡}|jd||fd}|dkr0|jdd}|r>| |¡}z | ¡Wntjk
rbYdSX|SdS)Nz%s+%s)Z
drivernameZpyodbcÚ)Úquery)Zget_backend_nameÚsetZupdate_query_stringÚ get_dialectrZNoSuchModuleError)ÚurlZdriverZ    query_strÚbackendÚnew_url©rúZd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\sqlalchemy/dialects/mssql/provision.pyrs 
 rc    Csl| ¡jddR}| d|¡| d|¡| d|¡| d|¡| d¡| d¡W5QRXdS)    NÚ
AUTOCOMMIT©Zisolation_levelzcreate database %sz1ALTER DATABASE %s SET ALLOW_SNAPSHOT_ISOLATION ONz0ALTER DATABASE %s SET READ_COMMITTED_SNAPSHOT ONzuse %szcreate schema test_schemazcreate schema test_schema_2)ÚconnectÚexecution_optionsÚexec_driver_sql©ÚcfgÚengÚidentÚconnrrrÚ_mssql_create_db,sÿÿ
r(c    Cs*| ¡jdd}t||ƒW5QRXdS)Nrr)r r!Ú_mssql_drop_ignorer#rrrÚ_mssql_drop_db;sr*c
Cs\z | d|¡t d|¡WdStjk
rV}zt d|¡WY¢dSd}~XYnXdS)Nzdrop database %sz Reaped db: %sTzcouldn't drop db: %sF)r"rÚinforZ DatabaseErrorÚwarning)r'r&Úerrrrrr)As  r)c     Cs¼t d|¡t|ƒ}| ¡jddŽ}t dd |¡¡| d¡}dd„|Dƒ}tƒ}|D]}||krZ| |¡qZd    }}    t    |d
ƒD]\}    }
t
||
ƒr„|d
7}q„t d ||    ¡W5QRXdS) Nzdb reaper connecting to %rrrzidentifiers in file: %sz, z›select d.name from sys.databases as d where name like 'TEST_%' and not exists (select session_id from sys.dm_exec_sessions where database_id=d.database_id)cSsh|]\}| ¡’qSr)Úlower)Ú.0ÚdbnamerrrÚ    <setcomp>`sz"_reap_mssql_dbs.<locals>.<setcomp>réz-Dropped %d out of %d stale databases detected) rr+rr r!Újoinr"rÚaddÚ    enumerater)) rZidentsr%r'Zto_reapZ    all_namesZto_dropÚnameZdroppedÚtotalr0rrrÚ_reap_mssql_dbsRs* ÿ 
 
ÿr8cCsiS)Nr)r$r%rrrÚ_mssql_temp_table_keyword_argsosr9cCsd|S)Nz##r)r$r%Ú    base_namerrrÚ_mssql_get_temp_table_nametsr;c Cs°| ¡jdd–}t|ƒ}dd|j|jfD]v}|j|dD]d}t|tƒtdt    ƒtdt    ƒ|d}t|ƒj
||dD],}|  t t |jjg|jjg|ddƒ¡qpq:q*W5QRXdS)    NrrZdbo)ÚschemaÚxÚyr6)r6)r r!rZ test_schemaZ test_schema_2Zget_table_namesr r
rrZget_foreign_keysÚexecuterr    Úcr=r>)r$r%r'Z    inspectorr<ZtnameÚtbZfkrrrr ys*ûÿÿÿr cCs|jdkrd|_|S)Nr2)Ústart)r$Úsequencerrrrs
rN)Z
sqlalchemyrrrrrr<rrr    r
r Ztesting.provisionr r rrrrrrrZfor_dbr(r*r)r8r9r;rrrrÚ<module>sD