U a@s8ddlmZddlmZddlmZddlmZddlmZddlmZddlm Z dd lm Z dd lm Z dd l m Z dd l mZdd l mZddl mZddl mZddl mZddl mZe dddZedddZddZedddZedddZedddZeddd Zd!S)")inspect)Integer) create_engine)exc)Column)DropConstraint)ForeignKeyConstraint)MetaData)Table) create_db)"drop_all_schema_objects_pre_tables)drop_db)get_temp_table_name)log) run_reap_dbs)temp_table_keyword_argsZmssqlc Csl|jddR}|d||d||d||d||d|dW5QRXdS) N AUTOCOMMITZisolation_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)connectexecution_optionsexec_driver_sqlcfgengidentconnrdC:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-nyjtotrf\sqlalchemy\dialects\mssql\provision.py_mssql_create_dbs rc Cs*|jdd}t||W5QRXdS)Nrr)rr_mssql_drop_ignorerrrr_mssql_drop_db"sr!c Cs\z |d|td|WdStjk rV}ztd|WYdSd}~XYnXdS)Nzdrop database %sz Reaped db: %sTzcouldn't drop db: %sF)rrinforZ DatabaseErrorwarning)rrerrrrrr (s  r c Cstd|t|}|jdd}tdd||d}dd|D}t}|D]}||krZ||qZd }} t |d D]\} } t || r|d 7}qtd || W5QRXdS) Nzdb reaper connecting to %rrrzidentifiers in file: %sz, zselect 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).0dbnamerrr Gsz"_reap_mssql_dbs..rz-Dropped %d out of %d stale databases detected) rr"rrrjoinrsetadd enumerater ) urlZidentsrrZto_reapZ all_namesZto_dropnameZdroppedtotalr'rrr_reap_mssql_dbs9s*    r1cCsiS)Nr)rrrrr_mssql_temp_table_keyword_argsVsr2cCsd|S)Nz##r)rr base_namerrr_mssql_get_temp_table_name[sr4c Cs|jdd}t|}dd|j|jfD]v}|j|dD]d}t|ttdt tdt |d}t|j ||dD],}| t t |jjg|jjg|ddqpq:q*W5QRXdS) NrrZdbo)schemaxyr/)r/)rrrZ test_schemaZ test_schema_2Zget_table_namesr r rrZget_foreign_keysexecuterr cr6r7)rrrZ inspectorr5ZtnametbZfkrrrr `s*r N)Z sqlalchemyrrrrr5rrr r r Ztesting.provisionr r rrrrrZfor_dbrr!r r1r2r4rrrrs8