From eb3ca5e95edd4d98392b1130afeece8b4dedaa09 Mon Sep 17 00:00:00 2001 From: Ezequiel Parziale Date: Wed, 14 Dec 2022 22:53:44 -0300 Subject: [PATCH 1/3] :memo: docs: add migrations section --- docs/advanced/migrations.md | 321 ++++++++++++++++++ .../img/advanced/migrations/migrations001.png | Bin 0 -> 45957 bytes .../img/advanced/migrations/migrations002.png | Bin 0 -> 30769 bytes .../img/advanced/migrations/migrations003.png | Bin 0 -> 31988 bytes docs_src/advanced/migrations/__init__.py | 0 .../migrations/annotations/en/tutorial005.md | 10 + .../migrations/annotations/en/tutorial007.md | 4 + docs_src/advanced/migrations/main.py | 45 +++ docs_src/advanced/migrations/tutorial001.py | 51 +++ docs_src/advanced/migrations/tutorial002.py | 51 +++ docs_src/advanced/migrations/tutorial003.py | 25 ++ docs_src/advanced/migrations/tutorial004.py | 82 +++++ docs_src/advanced/migrations/tutorial005.py | 35 ++ docs_src/advanced/migrations/tutorial006.py | 46 +++ docs_src/advanced/migrations/tutorial007.py | 29 ++ mkdocs.yml | 1 + 16 files changed, 700 insertions(+) create mode 100644 docs/advanced/migrations.md create mode 100644 docs/img/advanced/migrations/migrations001.png create mode 100644 docs/img/advanced/migrations/migrations002.png create mode 100644 docs/img/advanced/migrations/migrations003.png create mode 100644 docs_src/advanced/migrations/__init__.py create mode 100644 docs_src/advanced/migrations/annotations/en/tutorial005.md create mode 100644 docs_src/advanced/migrations/annotations/en/tutorial007.md create mode 100644 docs_src/advanced/migrations/main.py create mode 100644 docs_src/advanced/migrations/tutorial001.py create mode 100644 docs_src/advanced/migrations/tutorial002.py create mode 100644 docs_src/advanced/migrations/tutorial003.py create mode 100644 docs_src/advanced/migrations/tutorial004.py create mode 100644 docs_src/advanced/migrations/tutorial005.py create mode 100644 docs_src/advanced/migrations/tutorial006.py create mode 100644 docs_src/advanced/migrations/tutorial007.py diff --git a/docs/advanced/migrations.md b/docs/advanced/migrations.md new file mode 100644 index 0000000000..6dc80810b0 --- /dev/null +++ b/docs/advanced/migrations.md @@ -0,0 +1,321 @@ +# Migrations + +We will use `Alembic` to handle database schema changes. + +`SQLModel` is compatible with `Alembic`. + +## Initial example + +We'll continue from another example that has the creation of database and tables, and other essentials features. + +
+πŸ‘€ Full file example + +```Python +{!./docs_src/advanced/migrations/tutorial001.py!} +``` + +
+ +## First step + +Add `Alembic` to your project. + +Example using pip. + +
+ +```console +$ pip install alembic + +Installing collected packages: alembic +Successfully installed alembic-1.8.1 +``` + +
+ +## Clean your code + +We need to clean our step that create the database and tables. + +```Python hl_lines="3-4" +# Code above omitted πŸ‘† + +{!./docs_src/advanced/migrations/tutorial001.py[ln:19-20]!} + +# Code below omitted πŸ‘‡ +``` + +```Python hl_lines="4-4" +# Code above omitted πŸ‘† + +{!./docs_src/advanced/migrations/tutorial001.py[ln:44-47]!} + +# Code below omitted πŸ‘‡ +``` + +
+πŸ‘€ Full file example + +```Python +{!./docs_src/advanced/migrations/main.py!} +``` + +
+ +## Alembic configuration + +In this step we need initialize alembic. + +
+ +```console +$ alembic init migrations + +Creating directory migrations ... done +Creating directory migrations\versions ... done +Generating alembic.ini ... done +Generating migrations\env.py ... done +Generating migrations\README ... done +Generating migrations\script.py.mako ... done +Please edit configuration/connection/logging settings in 'alembic.ini' before proceeding. + +``` + +
+ +!!! info + We can also use `alembic init alembic` to create `alembic` folder instead of `migrations` folder. + +Then go to `migrations\script.py.mako` to add sqlmodel module. + +```Python hl_lines="5-5" +# Code above omitted πŸ‘† + +{!./docs_src/advanced/migrations/tutorial003.py[ln:8-10]!} + +# Code below omitted πŸ‘‡ +``` + +!!! info + In new migrations alembic will add SQLModel automatically. + +
+πŸ‘€ Full script.py.mako example + +```Python +{!./docs_src/advanced/migrations/tutorial003.py!} +``` + +
+ +Then go to `migrations\env.py` to finish the alembic configuration. + +- Import your models (in this case `Hero`) and `SQLModel` + +```Python hl_lines="5-6" +# Code above omitted πŸ‘† + +{!./docs_src/advanced/migrations/tutorial004.py[ln:1-6]!} + +# Code below omitted πŸ‘‡ +``` + +!!! warning + First import your models and then import SQLModel otherwise sqlmodel doesnΒ΄t recognize all models. + +- Then set your database url + +```Python hl_lines="4-4" +# Code above omitted πŸ‘† + +{!./docs_src/advanced/migrations/tutorial004.py[ln:13-14]!} + +# Code below omitted πŸ‘‡ +``` + +!!! tip + This step can be replaced setting the same `sqlalchemy.url` variable in `alembic.ini` file. + +- Finally set `target_metadata` with your `SQLModel.metada` + +```Python hl_lines="3-3" +# Code above omitted πŸ‘† + +{!./docs_src/advanced/migrations/tutorial004.py[ln:25-25]!} + +# Code below omitted πŸ‘‡ +``` + +
+πŸ‘€ Full env.py example + +```Python +{!./docs_src/advanced/migrations/tutorial004.py!} +``` + +
+ +## Run migrations + +In this step we need to generate the initial version of the database. + +
+ +```console +$ alembic revision --autogenerate -m "init_db" + +INFO [alembic.runtime.migration] Context impl SQLiteImpl. +INFO [alembic.runtime.migration] Will assume non-transactional DDL. +INFO [alembic.autogenerate.compare] Detected added table 'hero' +Generating migrations\versions\34abfb7ac266_init_db.py ... done +``` + +
+ +Now in `versions` folder we have a new file called `34abfb7ac266_init_db.py` + +!!! info + This file has a revision id and the message part from our revision command. + +```{ .python .annotate } +{!./docs_src/advanced/migrations/tutorial005.py!} +``` + +{!./docs_src/advanced/migrations/annotations/en/tutorial005.md!} + +!!! success + At this moment we have all the files to create our new database model. + +Initialize the database: + +
+ +```console +$ alembic upgrade head + +INFO [alembic.runtime.migration] Context impl SQLiteImpl. +INFO [alembic.runtime.migration] Will assume non-transactional DDL. +INFO [alembic.runtime.migration] Running upgrade -> 34abfb7ac266, init_db +``` + +
+ +Now we have two tables: + +- `alembic_version`: with the version_num asociate with the revision id +- `hero`: the new table from our model + + + +`Hero` table is empty. + + + +Then run `main.py` script + +
+ +```console +$ python main.py + +INFO sqlalchemy.engine.Engine BEGIN (implicit) +INFO sqlalchemy.engine.Engine INSERT INTO hero (name, secret_name, age) VALUES (?, ?, ?) +INFO sqlalchemy.engine.Engine [generated in 0.00035s] ('Deadpond', 'Dive Wilson', None) +INFO sqlalchemy.engine.Engine INSERT INTO hero (name, secret_name, age) VALUES (?, ?, ?) +INFO sqlalchemy.engine.Engine [cached since 0.002439s ago] ('Spider-Boy', 'Pedro Parqueador', None) +INFO sqlalchemy.engine.Engine INSERT INTO hero (name, secret_name, age) VALUES (?, ?, ?) +INFO sqlalchemy.engine.Engine [cached since 0.003134s ago] ('Rusty-Man', 'Tommy Sharp', 48) +INFO sqlalchemy.engine.Engine COMMIT +INFO sqlalchemy.engine.Engine BEGIN (implicit) +INFO sqlalchemy.engine.Engine SELECT hero.id, hero.name, hero.secret_name, hero.age +FROM hero +INFO sqlalchemy.engine.Engine [generated in 0.00038s] () +age=None id=1 name='Deadpond' secret_name='Dive Wilson' +age=None id=2 name='Spider-Boy' secret_name='Pedro Parqueador' +age=48 id=3 name='Rusty-Man' secret_name='Tommy Sharp' +INFO sqlalchemy.engine.Engine ROLLBACK +``` + +
+ +Now the `hero` table has new rows: + + + +## Next steps + +If we edit our model changing the database schema we can run again alembic to generate a new revision. + +Example: adding a new field named `power` + +```Python hl_lines="4-4" +# Code above omitted πŸ‘† + +{!./docs_src/advanced/migrations/tutorial006.py[ln:10-11]!} + +# Code below omitted πŸ‘‡ +``` + +
+πŸ‘€ Full file example + +```Python +{!./docs_src/advanced/migrations/tutorial006.py!} +``` + +
+ +
+ +```console +$ alembic revision --autogenerate -m "new field power" + +INFO [alembic.runtime.migration] Context impl SQLiteImpl. +INFO [alembic.runtime.migration] Will assume non-transactional DDL. +INFO [alembic.autogenerate.compare] Detected added column 'hero.power' +Generating migrations\versions\b39b8d3c77f0_new_field_power.py ... done +``` + +
+ +The new file `b39b8d3c77f0_new_field_power.py`: + +```{ .python .annotate } +{!./docs_src/advanced/migrations/tutorial007.py!} +``` + +{!./docs_src/advanced/migrations/annotations/en/tutorial007.md!} + +!!! note + Run `alembic upgrade head` to add the new field named power + +
+ +```console +$ alembic upgrade head + +INFO [alembic.runtime.migration] Context impl SQLiteImpl. +INFO [alembic.runtime.migration] Will assume non-transactional DDL. +INFO [alembic.runtime.migration] Running upgrade 357d6ebcfadf -> b39b8d3c77f0, new field power +``` + +
+ +!!! note + After you can downgrade the database to the previous version, run `alembic downgrade -1` + +
+ +```console +$ alembic downgrade -1 + +INFO [alembic.runtime.migration] Context impl SQLiteImpl. +INFO [alembic.runtime.migration] Will assume non-transactional DDL. +INFO [alembic.runtime.migration] Running downgrade b39b8d3c77f0 -> 357d6ebcfadf, new field power +``` + +
+ +!!! success + Migrations complete!!! Try adding new tables and relationship. diff --git a/docs/img/advanced/migrations/migrations001.png b/docs/img/advanced/migrations/migrations001.png new file mode 100644 index 0000000000000000000000000000000000000000..d439f416c9b8503074db2259f91f632e91548625 GIT binary patch literal 45957 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
(>F%_XL02d%S+(auiw$AtHs1>#zw( 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

-`DG_smH#m&DVu5M3-(YoU(lM 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 literal 0 HcmV?d00001 diff --git a/docs/img/advanced/migrations/migrations003.png b/docs/img/advanced/migrations/migrations003.png new file mode 100644 index 0000000000000000000000000000000000000000..f86db2735dcff408d4b3d554fd5b62a54351a17e GIT binary patch literal 31988 zcmbrlc{tnK_b*^d6ZP-AMRZ*;?(` zQJE&aad(&KUMlD+Fm%U`Kf<>E#KwHp9`4u?_3YYZtA8GPvV~HaM+Q+PG86$X7uuW) z@1+=s`|`=Yg!uWI0LjAyi^9>t>2vWU512u2Rlj@=_8{t-bMP zdo&-H4sSSV`k$KqKCLZ5(|?-agv)TmjpOW+cTWVJ|2TMRUo&dgH;BWENnUC|3qGZh zib`D-+iv?W-P1?MM@h60QxCPnEBk_Q*Q#HgON(Zb`J(rjZgU2VsELi-`*XN4eHc;%^ChZbXaxJEx*X5)o5>L zqG45PTrVD%b?7Ywr&UH?$nk)Gs(A5DFd9e>2xE^-uT;W%yQ2xbo&R>hac;qkaOx1@ z(Xoj9y)}2|PM=`ht7#uVjY6yif22uY6o0wijQ+U@?e+GiyiJSCb(k!o2ZTDIo_#O7 zZ&IEDBrWi}qet7{oc_$NnB0)3CfcAU8O7F8GsY zRj+!-1=&&~|GLu~hOXI;g|~+dC#dm;*op837(F8F^?%0V-;Tu`GlCe;4Q%!S7+LYc z>vJj=X;=47uc)F(-*f?|yH$B^;(`lt)5D#f@+L|T`}H%KsU*3h&$+@z!+zV*<*vUb@iieujO4}sr3rF*gllympF_igkY4fL%cZ@kGk z<9zR-w$STg3 zy_|s7+uyzkp@opN`;PCJGcsqqx&A6v(4~ppBl^P2G1-jP?33tHVb1t;{f{7ddHKqa z9~0L3mWbxNSvPml@Qi5cee$KtmoIB&KoascrM=ds*5e(2CtEa2RcXeJYCGEr50VddJu$BC zmCiS%B@U}>w>4!(NW7pelA!V`5`XhYjMYNwwn$tR_sjVQr3i^G@0(?fg^FJmJC6?|K&mz;6+pEXxou6$AF!3gsIcWaQ`_gjzuXL~bJ1YP1r zRp4mNwc_I9sa8p~OaX@oT5RB00`U-(Ik)4uZ*KMyI!SnjBH=sF3Q`=5LEP;(MQkj# zO;>&e2&x}-JwnHVSdaYMJ$JI&&hrZXn`=~{C?UCRx3Q#EEI z*z~x#I%Vgmku<>#7nsgtQSw+9u_!hbPio*a2hc=@Ghd^Ho*KB{f|z)!*a*85(`oo9 zMWnpLMDp;m>(U2p`>y`ALQOgQ1@$}%N|TH+by97d(d2&NI!u3W^%!zD1)Ru1`(&Q2{iPJF?1HXa-KlIX;6=atEh3XsdDA(d zOh2_|C)FmTJz}Q0e~NBw+$o?IzChG?gG7Ng`rDngd|;lrqb>Q&fp~c{A{rcAFDMN;n0w5u=&%Z7>I%8QK}_6_61iIL90} zRl@yZkw8+`rK=4PJf?)sQz%8}uH()^D8gGP#U1*l>BEYvzURNG${jak?#S-ClE?wQidw}-v;b6-(Tf`DCY2BNxTHvy_W-Q^Uz$>T=H+&1+LE>MWn@Lt6%^*(<9K$Ror@&6|AIjDu&B zha>a~_|G6`_ppygBKn@MG-jN-7iS1<`*N)m0b}dk`s>rM-Z2dorJ7dmy94#f-+y%c ze*InERfs`*Do0q%vEn_&Mky>MqLV;Z*%@_Ij`5q!{n-}kL(P_)`r5wuqCH#ED!en8JKiJN8Sl250cN%P zP?0trc@DFkRC|vzx)m3$4|(t%5p&-PKQJ{XBb}=32g^{+#=Naa>Km6Y%i6e)mOnMI zH@k-SF$@^>zy(L0nMc3c0*{W*&V zUYEe8RN1(vxRQgnz2Z!5m8G;(lCe_kslee+t?rT$Di2?n#fDQe7bxzU+VkOrL6Htc`Xf#Yjg7n9+!nJG)h^iLDon2z03W`&>9J-D z4FA?X#a29Z1!tjEwSEw>wFFdW$;u-lFpbM|x2k?76K@PScCA(X)sKK%NbJQ+W%&QG*vXY9(oYt2*&#Wtv8+MJj{T|eLp z!%i5-T9KcRMX=B_>Vs;#`;r`Dmh?Bp_BZ{_dpx9@23YPk2${}uj$kI*4K$8l{MdA; zLBqa;Zh!f+eb9om-`Ldl;skdbq#7&4;&Y=&Jj@ zrrovRg3)2t%CHw^7uoVdukFyelpH~-eKjwzsLEYUB~N3VX;@T*SMo9(m;=dZnVv0y zVw3_Qgo)incI6b$Nc8$sx~qq;MEBmErpUg%3iny9t+LX6lLwYMa^njguJ6vh(5Y&h zB%ZE=CEM@*gBm1UII05nQ{QLg-xL_4+{r%gs;g(X_Yfzb5rPE1W8Z2in@@gXk8cjR z7{@MiEWb$@WLc57I5At1z)yD`)j4gT&~pz*CcYmzZZ^(Oy;04pO7*GnWWRo`@?;>w zB<9nM>jOtnLW85)>)|V7k;~W8DMMXUdypn}44xe5hP*ufmb(H287)t(OQok&PYWgG zvcUM5+Xcj64Frr%sCdP@RgU?^Gvb-L#jj~8> zzjwsQ_m263HLC{mRac~naFjwkMl_qvAB7%r4;97Nuew49X55r|0kjgeCV#0GiX}h& z4ZXl%#~^L3U72a6i?tQPvbpt3j7kk$2)gWPw4}4{CYXxL4MP{!->)AcMo70ct&IiT z#_^psOJZ4Ido8D^Obq;!>S&zAV+iIxsbb{gy{g!xE_n}fo)tg6@n3oHDHsbI! z8qBBE-ps1iIU0J`ry>CBr%IiE9C1@+q+R`%b6Q}y_K~2@)T*^zW*y$j#=o&oyM>i$ zh$8RNx!)I9hUVd`s|yHsHT0+`G{eCwGWKc#FZx(lwt5QzjE&(JV_olcgZLCD8}|9B z0oLBQi?qX(bkqK~6j=mKYVGNtN{1C>y&!5G$A0*FUHka)4y*jmPHrJAMcs-m|KWmBYMxeULYM?U6Nh znI1|0v1w0${A14yxHBZkeURaS_W%_c#gqKO0}uKoZ{Q_KA2z@D1CZ;Qt)aiw4ba%P zp|hT6w|+m>?P4Ac`ZoRiVe{AU0>yutX5Izdz!q{L(a^{V{)!6K zm{VJJkgwv-4xEEe*HpiS&1w5Y1T#wvNIAO3MS7zqebR_UT3vx@MMjxM=aIkwPv&0< z8lT;@TrHakMKFza>vtKHIj<${e#GjPLv|Fvd?LvYOKlA71;0YBnjceAk#2C`HuXa2 z#6A-)pMH;0y>(mXb>!W8SwYmPnl!gK@6lhse-BlcfRUsMwo88x8KLPD3Mslsu^Ee1 zCQeugSNdn1e46P0T&jo%$`}QI8l;?ULOK$Ya`zF!_w>d70sB(xpt?&o5>e%#7C;Wo z*4X)2Y4@Wqb54O}73B?JM%aEkf8UzU0=r#m0l*?$p3h-H-|=dU6tY4sd@c{=smwPm zDk3bE)IXq4&Mo*AO}@NPu(;Iaq5+GpngNEOYbvm9bpNgCR#x*_&g<9)&wH%*9VF7@ z7m?+S2C&zS^}qADLnzP-XUNv8BSC!${v2Q)Mqq<@@U^lkaD&5wWic&C(bzr7X2fP* z4gDG06&yl&FkoHXO)0hpf7Ktp*24Di+>^}bPt;J`gRy1|*db5WX0&5LKwV!gs;TLo zvIQ0T39?*eg1@`kr=vLX3-)m>{LdiACKqbm9gS0`y6urH3tmJe^JCKH0DjE!BS6xU z^<#2++<>TAq`}c*SnxwbHd9JWVZ$2N<;pB^Gr5Xhg3C|iB|S+`H9i=*DrXuOUYwI! zZeIGhYQ#o_Hw~2>e#Tv_M`ywqja5U^VXJ0i#*v<0xur$;ddlZVq41aDI-4IC%w{=0 zY0H~A8{F3(Q(ajlUG}qVtwO*wpfglA@cK}C#LKTU=Eb(y1CbW+(INcJ*=ZB_cCBn8 zs|eUKXb+w=HkZ*~(x?w^88miqjJf5UQo;)_Cg~E*fra6;0ESyl+qGeYee~9l%#KBK zzdEU1;V<^^!dGqg2eEK4JR4$Mj*=NFXGeb1FQGrfnUNw@?o@4?7GFJ&?lOH@{?-}l zw>&7%R5cS2b{m=N*nLV$1Gm9w%Nd5`mjNGq=(70HZQGV_nd~EA(K2UUb+|uO)bp^$ z9H68p_tuE+9$aL>7XH~b;T}y5$_f+`` z(tN7>-7?L3q+iRg2nA0R>|QLB0ibW+zD?D$Fb1lyfm^;~=h}~WFZKp+dAz7IXl+t8 z0CX?e`mL0QfJloqXef}-!w-Gk?5!Cdl@y}ET>H7waC=k=G50p%rsPzgjhbN^nXuqu z5;C?n9ba30k5}wAow-Xu!jx1BPga=T4^@V&T^Rr_N#d$rok*F%BtjMcE<{WofM9f=j?W`8YOG$y9JwGoP=7tBBPnTzg>)Y36XXH z;l9wEWV?Vube3AKzcc$d)A^d61@E7t=6Kef#O8K2I4wA2p|bsTb5U=O+g0D99S~wb}(cYDD%3HLwN=r#p4Mp5J7eef#gZ*X$kN8G6p8Asl@e z*4O7ITRlik?|KNn`#;=S-{@+m-zzKtVa7SNG zkKc)yo7XR4dv7$&4}{?!=mZ8R`;NLo?4r%V9#`wS>PhdCKK4blPF}u1sha5@`quuA zB68>g#f3Yjdo>slZ;rs1<)-GI-CF1I7�YAuS&{3!OGoTs$3vm{L2z)MJ#}S(xM@ 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 None: + ${upgrades if upgrades else "pass"} + + +def downgrade() -> None: + ${downgrades if downgrades else "pass"} diff --git a/docs_src/advanced/migrations/tutorial004.py b/docs_src/advanced/migrations/tutorial004.py new file mode 100644 index 0000000000..61e79582e2 --- /dev/null +++ b/docs_src/advanced/migrations/tutorial004.py @@ -0,0 +1,82 @@ +from logging.config import fileConfig + +from main import Hero +from sqlmodel import SQLModel + +from sqlalchemy import engine_from_config +from sqlalchemy import pool + +from alembic import context + +# this is the Alembic Config object, which provides +# access to the values within the .ini file in use. +config = context.config +config.set_main_option("sqlalchemy.url", "sqlite:///database.db") + +# Interpret the config file for Python logging. +# This line sets up loggers basically. +if config.config_file_name is not None: + fileConfig(config.config_file_name) + +# add your model's MetaData object here +# for 'autogenerate' support +# from myapp import mymodel +# target_metadata = mymodel.Base.metadata +target_metadata = SQLModel.metadata + +# other values from the config, defined by the needs of env.py, +# can be acquired: +# my_important_option = config.get_main_option("my_important_option") +# ... etc. + + +def run_migrations_offline() -> None: + """Run migrations in 'offline' mode. + + This configures the context with just a URL + and not an Engine, though an Engine is acceptable + here as well. By skipping the Engine creation + we don't even need a DBAPI to be available. + + Calls to context.execute() here emit the given string to the + script output. + + """ + url = config.get_main_option("sqlalchemy.url") + context.configure( + url=url, + target_metadata=target_metadata, + literal_binds=True, + dialect_opts={"paramstyle": "named"}, + ) + + with context.begin_transaction(): + context.run_migrations() + + +def run_migrations_online() -> None: + """Run migrations in 'online' mode. + + In this scenario we need to create an Engine + and associate a connection with the context. + + """ + connectable = engine_from_config( + config.get_section(config.config_ini_section), + prefix="sqlalchemy.", + poolclass=pool.NullPool, + ) + + with connectable.connect() as connection: + context.configure( + connection=connection, target_metadata=target_metadata + ) + + with context.begin_transaction(): + context.run_migrations() + + +if context.is_offline_mode(): + run_migrations_offline() +else: + run_migrations_online() diff --git a/docs_src/advanced/migrations/tutorial005.py b/docs_src/advanced/migrations/tutorial005.py new file mode 100644 index 0000000000..6d58232887 --- /dev/null +++ b/docs_src/advanced/migrations/tutorial005.py @@ -0,0 +1,35 @@ +"""init_db + +Revision ID: 34abfb7ac266 +Revises: +Create Date: + +""" +from alembic import op +import sqlalchemy as sa +import sqlmodel # (1) + + +# revision identifiers, used by Alembic. +revision = '34abfb7ac266' +down_revision = None +branch_labels = None +depends_on = None + + +def upgrade() -> None: # (2) + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('hero', # (3) + sa.Column('id', sa.Integer(), nullable=False), # (4) + sa.Column('name', sqlmodel.sql.sqltypes.AutoString(), nullable=False), # (5) + sa.Column('secret_name', sqlmodel.sql.sqltypes.AutoString(), nullable=False), # (6) + sa.Column('age', sa.Integer(), nullable=True), # (7) + sa.PrimaryKeyConstraint('id') # (8) + ) + # ### end Alembic commands ### + + +def downgrade() -> None: # (9) + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('hero') # (10) + # ### end Alembic commands ### diff --git a/docs_src/advanced/migrations/tutorial006.py b/docs_src/advanced/migrations/tutorial006.py new file mode 100644 index 0000000000..9d5e9e5202 --- /dev/null +++ b/docs_src/advanced/migrations/tutorial006.py @@ -0,0 +1,46 @@ +from typing import Optional + +from sqlmodel import Field, Session, SQLModel, create_engine, select + + +class Hero(SQLModel, table=True): + id: Optional[int] = Field(default=None, primary_key=True) + name: str + secret_name: str + age: Optional[int] = None + power: int = None + + +sqlite_file_name = "database.db" +sqlite_url = f"sqlite:///{sqlite_file_name}" + +engine = create_engine(sqlite_url, echo=True) + +def create_heroes(): + hero_1 = Hero(name="Deadpond", secret_name="Dive Wilson") + hero_2 = Hero(name="Spider-Boy", secret_name="Pedro Parqueador") + hero_3 = Hero(name="Rusty-Man", secret_name="Tommy Sharp", age=48) + + with Session(engine) as session: + session.add(hero_1) + session.add(hero_2) + session.add(hero_3) + + session.commit() + + +def select_heroes(): + with Session(engine) as session: + statement = select(Hero) + results = session.exec(statement) + for hero in results: + print(hero) + + +def main(): + create_heroes() + select_heroes() + + +if __name__ == "__main__": + main() diff --git a/docs_src/advanced/migrations/tutorial007.py b/docs_src/advanced/migrations/tutorial007.py new file mode 100644 index 0000000000..e1d9bd47c1 --- /dev/null +++ b/docs_src/advanced/migrations/tutorial007.py @@ -0,0 +1,29 @@ +"""new field power + +Revision ID: b39b8d3c77f0 +Revises: 357d6ebcfadf +Create Date: + +""" +from alembic import op +import sqlalchemy as sa +import sqlmodel + + +# revision identifiers, used by Alembic. +revision = 'b39b8d3c77f0' # (1) +down_revision = '357d6ebcfadf' # (2) +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('hero', sa.Column('power', sa.Integer(), nullable=True)) # (3) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('hero', 'power') # (4) + # ### end Alembic commands ### diff --git a/mkdocs.yml b/mkdocs.yml index a27bbde8a1..237fa3aa69 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -85,6 +85,7 @@ nav: - Advanced User Guide: - advanced/index.md - advanced/decimal.md + - advanced/migrations.md - alternatives.md - help.md - contributing.md From 3cf251f15043dd168e75caa878343a4d867d9059 Mon Sep 17 00:00:00 2001 From: Ezequiel Parziale Date: Wed, 14 Dec 2022 23:37:22 -0300 Subject: [PATCH 2/3] :art: update: code format --- docs/advanced/migrations.md | 4 +-- docs_src/advanced/migrations/main.py | 1 + .../{tutorial003.py => tutorial003.mako} | 0 docs_src/advanced/migrations/tutorial004.py | 21 ++++++---------- docs_src/advanced/migrations/tutorial005.py | 25 +++++++++++-------- docs_src/advanced/migrations/tutorial006.py | 1 + docs_src/advanced/migrations/tutorial007.py | 14 +++++------ 7 files changed, 32 insertions(+), 34 deletions(-) rename docs_src/advanced/migrations/{tutorial003.py => tutorial003.mako} (100%) diff --git a/docs/advanced/migrations.md b/docs/advanced/migrations.md index 6dc80810b0..acf2a6fd6e 100644 --- a/docs/advanced/migrations.md +++ b/docs/advanced/migrations.md @@ -92,7 +92,7 @@ Then go to `migrations\script.py.mako` to add sqlmodel module. ```Python hl_lines="5-5" # Code above omitted πŸ‘† -{!./docs_src/advanced/migrations/tutorial003.py[ln:8-10]!} +{!./docs_src/advanced/migrations/tutorial003.mako[ln:8-10]!} # Code below omitted πŸ‘‡ ``` @@ -104,7 +104,7 @@ Then go to `migrations\script.py.mako` to add sqlmodel module.

πŸ‘€ Full script.py.mako example ```Python -{!./docs_src/advanced/migrations/tutorial003.py!} +{!./docs_src/advanced/migrations/tutorial003.mako!} ``` diff --git a/docs_src/advanced/migrations/main.py b/docs_src/advanced/migrations/main.py index 8c5b78f3b5..067a8292f9 100644 --- a/docs_src/advanced/migrations/main.py +++ b/docs_src/advanced/migrations/main.py @@ -15,6 +15,7 @@ class Hero(SQLModel, table=True): engine = create_engine(sqlite_url, echo=True) + def create_heroes(): hero_1 = Hero(name="Deadpond", secret_name="Dive Wilson") hero_2 = Hero(name="Spider-Boy", secret_name="Pedro Parqueador") diff --git a/docs_src/advanced/migrations/tutorial003.py b/docs_src/advanced/migrations/tutorial003.mako similarity index 100% rename from docs_src/advanced/migrations/tutorial003.py rename to docs_src/advanced/migrations/tutorial003.mako diff --git a/docs_src/advanced/migrations/tutorial004.py b/docs_src/advanced/migrations/tutorial004.py index 61e79582e2..453b230815 100644 --- a/docs_src/advanced/migrations/tutorial004.py +++ b/docs_src/advanced/migrations/tutorial004.py @@ -1,12 +1,12 @@ -from logging.config import fileConfig +from logging.config import fileConfig # isort:skip -from main import Hero -from sqlmodel import SQLModel +from main import Hero # isort:skip +from sqlmodel import SQLModel # isort:skip -from sqlalchemy import engine_from_config -from sqlalchemy import pool +from sqlalchemy import engine_from_config # isort:skip +from sqlalchemy import pool # isort:skip -from alembic import context +from alembic import context # isort:skip # this is the Alembic Config object, which provides # access to the values within the .ini file in use. @@ -32,15 +32,12 @@ def run_migrations_offline() -> None: """Run migrations in 'offline' mode. - This configures the context with just a URL and not an Engine, though an Engine is acceptable here as well. By skipping the Engine creation we don't even need a DBAPI to be available. - Calls to context.execute() here emit the given string to the script output. - """ url = config.get_main_option("sqlalchemy.url") context.configure( @@ -56,10 +53,8 @@ def run_migrations_offline() -> None: def run_migrations_online() -> None: """Run migrations in 'online' mode. - In this scenario we need to create an Engine and associate a connection with the context. - """ connectable = engine_from_config( config.get_section(config.config_ini_section), @@ -68,9 +63,7 @@ def run_migrations_online() -> None: ) with connectable.connect() as connection: - context.configure( - connection=connection, target_metadata=target_metadata - ) + context.configure(connection=connection, target_metadata=target_metadata) with context.begin_transaction(): context.run_migrations() diff --git a/docs_src/advanced/migrations/tutorial005.py b/docs_src/advanced/migrations/tutorial005.py index 6d58232887..20f06d564a 100644 --- a/docs_src/advanced/migrations/tutorial005.py +++ b/docs_src/advanced/migrations/tutorial005.py @@ -5,13 +5,13 @@ Create Date: """ -from alembic import op -import sqlalchemy as sa -import sqlmodel # (1) +from alembic import op # isort:skip +import sqlalchemy as sa # isort:skip +import sqlmodel # (1), # isort:skip # revision identifiers, used by Alembic. -revision = '34abfb7ac266' +revision = "34abfb7ac266" down_revision = None branch_labels = None depends_on = None @@ -19,17 +19,20 @@ def upgrade() -> None: # (2) # ### commands auto generated by Alembic - please adjust! ### - op.create_table('hero', # (3) - sa.Column('id', sa.Integer(), nullable=False), # (4) - sa.Column('name', sqlmodel.sql.sqltypes.AutoString(), nullable=False), # (5) - sa.Column('secret_name', sqlmodel.sql.sqltypes.AutoString(), nullable=False), # (6) - sa.Column('age', sa.Integer(), nullable=True), # (7) - sa.PrimaryKeyConstraint('id') # (8) + op.create_table( + "hero", # (3) + sa.Column("id", sa.Integer(), nullable=False), # (4) + sa.Column("name", sqlmodel.sql.sqltypes.AutoString(), nullable=False), # (5) + sa.Column( + "secret_name", sqlmodel.sql.sqltypes.AutoString(), nullable=False + ), # (6) + sa.Column("age", sa.Integer(), nullable=True), # (7) + sa.PrimaryKeyConstraint("id"), # (8) ) # ### end Alembic commands ### def downgrade() -> None: # (9) # ### commands auto generated by Alembic - please adjust! ### - op.drop_table('hero') # (10) + op.drop_table("hero") # (10) # ### end Alembic commands ### diff --git a/docs_src/advanced/migrations/tutorial006.py b/docs_src/advanced/migrations/tutorial006.py index 9d5e9e5202..8470140a52 100644 --- a/docs_src/advanced/migrations/tutorial006.py +++ b/docs_src/advanced/migrations/tutorial006.py @@ -16,6 +16,7 @@ class Hero(SQLModel, table=True): engine = create_engine(sqlite_url, echo=True) + def create_heroes(): hero_1 = Hero(name="Deadpond", secret_name="Dive Wilson") hero_2 = Hero(name="Spider-Boy", secret_name="Pedro Parqueador") diff --git a/docs_src/advanced/migrations/tutorial007.py b/docs_src/advanced/migrations/tutorial007.py index e1d9bd47c1..e61ca63756 100644 --- a/docs_src/advanced/migrations/tutorial007.py +++ b/docs_src/advanced/migrations/tutorial007.py @@ -5,25 +5,25 @@ Create Date: """ -from alembic import op -import sqlalchemy as sa -import sqlmodel +from alembic import op # isort:skip +import sqlalchemy as sa # isort:skip +import sqlmodel # isort:skip # revision identifiers, used by Alembic. -revision = 'b39b8d3c77f0' # (1) -down_revision = '357d6ebcfadf' # (2) +revision = "b39b8d3c77f0" # (1) +down_revision = "357d6ebcfadf" # (2) branch_labels = None depends_on = None def upgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### - op.add_column('hero', sa.Column('power', sa.Integer(), nullable=True)) # (3) + op.add_column("hero", sa.Column("power", sa.Integer(), nullable=True)) # (3) # ### end Alembic commands ### def downgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### - op.drop_column('hero', 'power') # (4) + op.drop_column("hero", "power") # (4) # ### end Alembic commands ### From feea75f42fa29599179f7d717fe1ef121afd88fa Mon Sep 17 00:00:00 2001 From: Ezequiel Parziale Date: Wed, 14 Dec 2022 23:44:20 -0300 Subject: [PATCH 3/3] :art: update: code format for lint --- docs_src/advanced/migrations/tutorial004.py | 2 +- docs_src/advanced/migrations/tutorial005.py | 2 +- docs_src/advanced/migrations/tutorial007.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs_src/advanced/migrations/tutorial004.py b/docs_src/advanced/migrations/tutorial004.py index 453b230815..e113d5c650 100644 --- a/docs_src/advanced/migrations/tutorial004.py +++ b/docs_src/advanced/migrations/tutorial004.py @@ -1,6 +1,6 @@ from logging.config import fileConfig # isort:skip -from main import Hero # isort:skip +from main import Hero # noqa: F401, isort:skip from sqlmodel import SQLModel # isort:skip from sqlalchemy import engine_from_config # isort:skip diff --git a/docs_src/advanced/migrations/tutorial005.py b/docs_src/advanced/migrations/tutorial005.py index 20f06d564a..bd5d529bd9 100644 --- a/docs_src/advanced/migrations/tutorial005.py +++ b/docs_src/advanced/migrations/tutorial005.py @@ -1,7 +1,7 @@ """init_db Revision ID: 34abfb7ac266 -Revises: +Revises: Create Date: """ diff --git a/docs_src/advanced/migrations/tutorial007.py b/docs_src/advanced/migrations/tutorial007.py index e61ca63756..0f332b9000 100644 --- a/docs_src/advanced/migrations/tutorial007.py +++ b/docs_src/advanced/migrations/tutorial007.py @@ -7,7 +7,7 @@ """ from alembic import op # isort:skip import sqlalchemy as sa # isort:skip -import sqlmodel # isort:skip +import sqlmodel # noqa: F401, isort:skip # revision identifiers, used by Alembic.