From c7adbe19549356c24a1f4849a5f9338a99e3c257 Mon Sep 17 00:00:00 2001 From: jeff-dillon Date: Sun, 3 Sep 2023 23:47:19 -0400 Subject: [PATCH] initial implementation --- .gitignore | 4 ++ README.md | 85 +++++++++++++++++++++++++++- create_db.py | 86 +++++++++++++++++++++++++++++ db/fashion_magazines.db | Bin 0 -> 16384 bytes fashion-magazines.session.sql | 8 +++ img/schema.png | Bin 0 -> 107108 bytes requirements.txt | 12 ++++ run_sql.py | 101 ++++++++++++++++++++++++++++++++++ sql/create_db.sql | 73 ++++++++++++++++++++++++ sql/fashion_magazines.sql | 1 + 10 files changed, 369 insertions(+), 1 deletion(-) create mode 100644 create_db.py create mode 100644 db/fashion_magazines.db create mode 100644 fashion-magazines.session.sql create mode 100644 img/schema.png create mode 100644 requirements.txt create mode 100644 run_sql.py create mode 100644 sql/create_db.sql create mode 100644 sql/fashion_magazines.sql diff --git a/.gitignore b/.gitignore index 68bc17f..cf39498 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +.vscode +sql/solution.sql +data/fashion_magazines.csv + # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] diff --git a/README.md b/README.md index 60c4483..820eb87 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,85 @@ -# fashion-magazines +# Fashion Magazines Code Louisville Data Analysis Exercise + + +## Overview + +In this exercise we will write a SQL query against a database of magazine +subscriptions. This exercisee is based on the Codecademy "Multiple Tables" +lesson. + +### Schema +![database schema](img/schema.png) + +### Table: customers +| column | type | constraint | +| ------ | ---- | ---------- | +| customer_id | INTEGER | PRIMARY KEY | +| customer_name | TEXT | NOT NULL | +| address | TEXT | NOT NULL | + + +### Table: subscriptions +| column | type | constraint | +| ------ | ---- | ---------- | +| subscription_id | INTEGER | PRIMARY KEY | +| description | TEXT | NOT NULL | +| price_per_month | INTEGER | NOT NULL | +| subscription_length | INTEGER | NOT NULL | + +### Table: orders +| column | type | constraint | +| ------ | ---- | ---------- | +| order_id | INTEGER | PRIMARY KEY | +| customer_id | INTEGER | FOREIGN KEY | +| subscription_id | INTEGER | FOREIGN KEY | +| purchase_date | TEXT | NOT NULL | +| order_status | TEXT | NOT NULL | + +### Requirements + +Write a SQL query that returns the customer name and total amount due for the +customers that have unpaid Fashion Magazine subscriptions. Note that the column +names in the resulting file need to match the column names in the example below. + +Hints +- You will need to join the customers, subscriptions, and orders tables +- You will need to multiply the subscirption price with the subscription length +to get the total amount due +- You will need to sum the amount due to account for customers that have more +than one unpaid Fashion Magazine subscriptions +### Example Output + +| Customer | Amount Due | +| -------- | ---------- | +| Bethann Schraub | 102 | +| Eryn Vilar | 102 | +| Janay Priolo | 57 | +| Lizabeth Letsche | 237 | + + +## Insructions + +1. Clone the repo to your machine. +1. Create a virtual environment and install the packages listed in the `requirements.txt` file. +1. Add your SQL query to the `sql/fashion_magazines.sql` file. +1. Run the `run_sql.py` script. +1. Add, Commit, and Push your `sql/fashion_magazines.sql` and `data/fashion_magazines.csv` files back to GitHub. + +### Virutal Environment Instructions + +1. After you have cloned the repo to your machine, navigate to the project folder in GitBash/Terminal. +1. Create a virtual environment in the project folder. `python3 -m venv venv` [^1] +1. Activate the virtual environment. `source venv/bin/activate` +1. Install the required packages. `pip install -r requirements.txt` +1. When you are done working on your repo, deactivate the virtual environment. `deactivate` + +[^1]: GitBash on Windows uses “python” instead of “python3” + +### Automated Testing + +This repo contains a small testing program that is automatically run by GitHub to validate your code. This testing program is contained in the tests.py file. You don't have to do anything with this file to complete the exercise, but you can follow these steps if you would like to run the tests on your machine. + +1. Open GitBash in Windows or the Terminal in Mac and navigate to the project folder. +1. Use the following command to run the tests: `pytest tests.py`. +1. Review the output from running the test. This will let you know whether your code produces the expected results. \ No newline at end of file diff --git a/create_db.py b/create_db.py new file mode 100644 index 0000000..a41a92e --- /dev/null +++ b/create_db.py @@ -0,0 +1,86 @@ +import sqlite3 +from sqlite3 import Error +from sqlite3 import OperationalError +import os + +def create_connection(path_to_db_file: str) -> sqlite3.Connection: + """ create a database connection to the SQLite database + specified by db_file + :param db_file: database file + :return: Connection object or None + """ + conn = None + try: + conn = sqlite3.connect(path_to_db_file) + return conn + except Error as e: + print(e) + + return conn + + +def execute_sql(conn: sqlite3.Connection, sql_file: str) -> None: + """ create a table from the create_table_sql statement + :param conn: Connection object + :param sql_file: one or more sql commands + :return: + """ + + sqlCommands = sql_file.split(';') + + for command in sqlCommands: + try: + conn.execute(command) + conn.commit() + except OperationalError as msg: + print("Command skipped: ", msg) + + return None + + +def get_sql(file_path: str) -> str: + """retrieve the SQL commands from a text file + @param: file_path - the path to the text file + @return: str - a string containing the contents of the file""" + fd = open(file_path, 'r') + sql = fd.read() + fd.close() + return sql + + +def validate_db(conn: sqlite3.Connection) -> None: + """validate that the databse was set up correctly + @param conn: a connection to the database""" + try: + result = conn.execute("select * from customers;") + rows = result.fetchall() + if len(rows) != 10: + print('data did not load') + else: + print('setup complete') + except Error as e: + print(e) + + +def main() -> None: + database = "db/fashion_magazines.db" + create_db_script = "sql/create_db.sql" + + if os.path.exists(database): + os.remove(database) + + if os.path.exists(database): + os.remove(database) + + conn = create_connection(database) + + if conn is not None: + execute_sql(conn, get_sql(create_db_script)) + validate_db(conn) + conn.close() + + return None + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/db/fashion_magazines.db b/db/fashion_magazines.db new file mode 100644 index 0000000000000000000000000000000000000000..8d171b43205367bc2d1e74348e3d36868324acb4 GIT binary patch literal 16384 zcmeI3&u`mg7{_17j?<)x-;H%mE4KBGprldPHcqy->_pnRrCs`iv_niFb#G#~F*tUx z9i|QrtcWw>$N^6L0TU-~?7|I+1OEWxfH-jE58#dMICdK$E)zp~tT@U0KHogg_xbqE z!H#qAR$X^Ba%|Zh>XItDgg6epK?p)fWV^uj!N#*U(J?m&{KKn=7VmwTV*);R4dFuW zd-ehw5C8%|00;m9AOHk_01yBIK;VTV@MM}#UM*Xn4t6TT7F8%pg^ zA&0fKx^HV{YK;fvp7P*kTx8OYMh=yC4$1Bw+wa%w zzJRK#tvOCSlqsDZCsO(8Y3}o)=gqQJX3T%)W3K$Uz>+ukcYY$KGxtz3@vqXj^q2HY?hpJ7e&64oRiFq`(={CAWL~A zlz2W;fnaPPkmb1GiZ2j`omAt3bRY;zM2vbRUh)NeSfcWJEJNY4Cz$4gRvFS^iGXJ= z$Pu<0k@SlcvO$i3=gNXy4vPf1_&_o=df~8fL7CxE8D{Z%N%(?9n4=u;g-nPj&DKV0 zfb+uAAeVeaXtaFZ#SQE!u7)NeioS^(89&~yv3zd%_2d2X|BUn$;otBN_-p(zzK^ST zLi$tsnN7k51b_e#00KY&2mk>f00e*l5C8%|;6Ea8JtLr3O53_g$p*D;`o3H)lQsL4 znxyuTw)k>dK!u`WpPJ-t-JtgEWwOJ5x@SMRAGnLJjR|OJX|LPX44txxo~@eHbgMGC zt7-PJt{JMAy}}y%H&N}O?R3-`-F%BnlG+tZkw7cZ>w$7UXxv> z*kL#0vm5gb!+JHz6iZvC)zZusE468zwk)|qY8}VbY?XGrGDHwiaekZqxr0g8dTxiB zGFi8bUZ=_a64CF5@B&(xt?Q3zlT{;i&2?IBZDp0!qPo{oA;A>PYU{(E!EQ_-cXd@Y lv|Ft0eQJN;CAr42Zf0wSp=+c;+f?t!l`2DKQS}i${TsS?A^89R literal 0 HcmV?d00001 diff --git a/fashion-magazines.session.sql b/fashion-magazines.session.sql new file mode 100644 index 0000000..b4cc433 --- /dev/null +++ b/fashion-magazines.session.sql @@ -0,0 +1,8 @@ +SELECT customers.customer_name, + sum((subscriptions.price_per_month * subscriptions.subscription_length)) as 'Amount Due' +FROM orders + left join subscriptions on orders.subscription_id = subscriptions.subscription_id + left join customers on orders.customer_id = customers.customer_id +WHERE subscription.description = 'Fashion Magazine' + AND orders.order_status = 'unpaid' +GROUP BY customers.customer_name; \ No newline at end of file diff --git a/img/schema.png b/img/schema.png new file mode 100644 index 0000000000000000000000000000000000000000..3b2cf4b02ee10dd49294ebc26e9ad1bf207aef00 GIT binary patch literal 107108 zcmeFZcTiJZ*gYC-hzJNs?;S)yKzfNv0HumZkt(1fy>}8+1VW7{y-M#@dR2i$y427? zLXl2r350SFuloD`zjyA;y))mLIgrGYea_zdDQm6g!O+KAs$|y~uYo`yvPTagPe7on za1iLC@YO58C*H$_J|Ga0u#J+^V_iEN3lNAu8u|gO-uC=P2%Gx-o0l`Lk&`F3D?8Yc z(3n)&x>V`C_D~xF!yT^MKvLVMJDlcni{|K@U7y}aVLrY(KR34^Lh|ulyWD1TNF&=8 zVdlOq<1<-O1r+YqqC}Sdta$J&!^eFEQ7^V zcgRhRZa-Q4aPjuQm7t$e0u^BeChV$;5j6@RZIrYI^rPg+Fki4i{yS>eVo@Z%{vkuCs;v8{oTPBM@bL?KvBD98UCXC?4i@wp4 zOOj?bz3Q|$1#L*GeT^}$_5y*}L60E!pL(aPPkVW%7$i!~sb}L zNHTahII2qaz6wL*5kWbQhc)FNdSPEBpXx>_}q^SmP$b zn%k?Jbr$F0Vw$#_hHL7VOCriR>~(XUn3!m|0PNZM@uoQT_u9WVAnD3WkUyV;K$R(P zuKs;}FOK>K(cjlUTrY6`yX2YHy-R;zvv-pK#_;EOAwxv@_vM@0eC+>5|FHPKga7Zc z{I>%CYc2olM1Ni3UR?Lu+68ZQsFnI{qn3)YZV*U1LobHM>Ik0!H9b!)AP}?u1x{3g z)A4pji!c#r?)^c(xwnCN{GSm*QiWdqdG-IXn6K!!uKKAR@=gk^j#|1OPlTWH5e86ZJCVbXY%6O2V;{74aH_;Y=a`D&F-(B zlHU$56l$FB3!&>6W$}QT(*AkUuO#aC-dpt*d{Tu}-f1OZN0WjTi*vW2ODA;gi`Lq! zF#pa(YK)S3^L_%E$-)BUc!+L>Md>Ks6Ok$bbwB=vc3f*K{5xqa`{$fY@hJ)duGGYFJbpVtvDgJt zK|=9AGk&td{vho8yC!}SA>fx4pWN`kK%%7n(*(A|!+M5STj|G5Q~ZJgVJ~!G3k%Ht z4xtdOnAn@j_fIpx=AkLmc8iNIVaBXcpOr1{n{kIEEw7cty7+bsZ zEQXDz^SjbfJzMw|^`D1)GlO^Ey%e7w&lH~~E+Z`K_CSMGoVzQGv=Jd8S=*5mIcfFH zPET}eQLn;MbG3$77ex_?F!yro8sq90LNv0Or(lhwroCYr%&83uod!-VQmc$cz9kja zC0v}G!DO3sY~F+wmze@g!`f6+voI^vLV3z_>)mTx#|@8Eacu?`gA@fGtu*P|!FwVb ztWI`Y5oE@;^CPjz^D99`m=2z`%rD|@l^kHOR9~9U6BGZXc4?pE^55oh5fDqS!OtxP zJo?3xwEaS6ObEqB`5N?H_jIpsiPZB+;nwcp(_g0j?SnMQoSc?}bzS)F5$pCuT~$?> z8D~QSXX$AVBD0`gh?DblZ^CUphNSJuDt?KAP2(AOsOjuzW4FS2Joq6kO?#w4DrWy|#-+?6jxPpj^o`)vVPv}+;f}$DILk||)xAr`FnTO>0!j}^}|g3+_FcQXp!#1CL4X?`z04#QW+^Nd-K+ZP-+b zmN;nI9A(+ZZm@xGQc`|G=^^*y`@)9uA|rM_X2Qo#8jOySx%gg8IHrIOuJnM6saE_@e$HQj`@ zjo2F2qV_4sWp#n_zZ1(qJ&&0^eTl31c2P}t6MC>WP~qN@>y7KkYuA)YL9>X3!e4Lw zUMCNMKvM2<+BMJp@KjY{Iv6=a0vp%46bQ547_kuohA zML%Q$eu`K`gT%JU20yn`wfy{^k4qQk6JWY8EMPcHiC@sOgQtLBr4xPzxvV_qOKwHI}J*VW%2*?Q>S&*p2rvtDF}Q&_pmFDM-51l@74 z`Sn48Y{i`MY`fk|d4ToT8!6~PAl)84c_;S}REq_Cw*_~I1Ky5L2KG12tO3gv(&3Yb zK=e;}!_=g?IWucAd|K@`dZ%dn3^hne5@mL+13vA* zwfbu!etl?8m9jIL+KFAul&%k$T<~8(2!|q?_!O8cYe}`!Z?M6Z6Kyc4A;MpD|5-{F zp7Oab$>oXBSVm0-4-EG`EWf}m43?uT`f~k4f>p6=VcS zTNbda6LPYcG`_g(9udH?$^zEI_(fE3~!@dp`Cr`>V}7Cc_#N!Jdf_u;xf zTT{6oAz>y(#^EWhl_|-{YN%#{UhH#~Uvi>?saI!D-Nwx2fr-%>1yA|rf9~kZ#qRn} z)&~Eksv@9%Bh-8SkVe2NHn0m5=9br2q*}93a}wHn=tuYXQ^vg3?8*eGGCLSSJ~1HGecboO|W& z4D4G~l_O(`0}B=h_PNU%0DI}~>7fj1hj)e5c^|X`p$syu*zjgyk(X0MYM^;^R~_9k zp($szT#9@x`=eZ0+p*paHnqPkI50lW5So(WjRt%%Z`RAKE5*i2(CRq|%__Fk5j?Pc;aXAPfV0a2Zeig&Ry$)H*i}{{ z1ZD&Jmqz}iCW@whO4tJP&kh{|esBnQ`pW0W%_Wksqse8&D;tIr^mM;hh!Q8~DwFZN zG1&i(BVm#v$35Yrh!o85@-6<$5hbC`!FQiJ1?EYL+-Mg=+;J4EuHHbW)bLiz23^i`7GTYWo)7?E6_5*DDTKRav zcng6r2lL$`j@^R#hGl*~PN+lc-#Isvug5QmpTJZ+B89Lc$y*ARzdpd>e6+<~(x*S% zR*dI>l-@GZ9eo!_Q&km&WszQK+&7<dS=0&9`~x-O{H!YkD?TIeyKXh*})U zpWt^-`w~R!F=<@!IaC}(hU|$%CIk4X^|&>FJ{@*;NVxu(nGCppg@>vs(yANn_=t%~ z>~k?;)`Lt4`@<|%k(2Xd(4ou8%P;ezTd+GV9z%Mf(E0L+H3}vZR=0P|=5#{MtPhj+&<`Q)QKn=zRx*Ak<%qoh^Y~8ZkH4{ziX91P7O5G{4tU5~A$Jd( z7OoYV4kcW~hB7Uwz|1x|%*Cx|b;W>avw|Hf4c>dxF=NUCb0&Pkc7;VU^lL9Hw5KFm zVTjEecw2T8i>#h2KkC9(e*9kL<~b^{p*>EhavX|ktJHF0WE2B?c`zW=Kd#_>v$+AB z_@XRb7piMlRh#FuvXeV;w71;cRE0|d;!ak5ju56oV-l6!yAt^CiN8j(v%6j}Zgf#S zUNN7gY=y0lyk7eic-S-rX~GRAVky!C3>FqyCc1O-@0@+^n`|sDu|9 zvIS5}o%x#$zq%UJw34EWY)76G&X40R3JALiw0KUDpmz%d-8lSh9zcPhL zpH7n{cZNYAx^_#>Ki*1D{2w^U^^Gr)udX3@3IEMO8yOjZ9je=S8=u)C;D!p-<-Hz` zGZC{&U)zt9;};pnd9o+Q@RIsozx(vXnB@zDU_VV+1+wUsjuYO?`udlhbqE79MamBJOfR7eEDWT1$LwueH_WJitJ$ zODyJ(H`9rex%BaN7XrXP68+~J;Ha^p2$6gTkibpn0K#F*7p^bY!^VT16uHdYcLHft#-dezmu zi!Pke)LbF2N^A4)fP=}@pk#L?Yn4rd@BEB*fBa`j-%$7b$e_Uv;QB%lEnZsw_|z|i z24>J4?h@qTz|1`BAqWs6BTzWh5_B>=jU$+n zHnkZ1iV9~EYoMwdX48zG!*{b&rCSR+C*iAkipkV6KDdDtWSTo0B)o2I2I>)y439Dp)B9(?J$Au zhi!kS7x%w6flmN%Yj=RZ%{j*yp!oZ*imu{%3t z6>bK)8Z5>PS-7haO)DAJ@v5pQV^fh^UE$|BC{)`-j?c`rUewIDh1slGApNA=qNwbwKgSX+W5`#;*yG+ zx^Y#t*ZOYCcwR&(K%$_1le24l;nz5&qN&L=O9sY$@M#|)oRmDB?`F%AXEgns0G9mP z!3j}Q0|gT+`0T=fXqhR{M!OV}2{UKSS#&ZqgP&uh}V6olQ(N{b(@lNde#Kp z9FD<4IQak;;tIaC<@X7BJ@k=P@SgWEu~$zwUVUz7WTfJyHT3#;(Z%knidazx`7j0|O-CM!dpW}m;7ou8^dMwKG_(%YyiC7(Y`X73ep;g`!m z;-~o@n=H%6XCL{0Og8s=0hbmROt6xg6@|?z)XM8`U>B_i9-Fj1HZ)h!J(|Y%6=s)_}rE<~TLR!7UFN5!%)mAUx?Q(LNMD+Rj4JbThej z^uVw!d1u!RGx&uM#bd1*QNX9CQt9l4T176^7@9YWpDP^l$9rqdGySvBgH)ZT(h@%(QNU%j zlug-OT4As0;eQfGJRjA1;>=AY)7&>bd3Lg56wLmr8N0XF@eqa@(2L~RX9s5OBu{p4$q4U5vuFaYhFC)3~^-BJhV zRwhp~d(=J|^)Rw}zZbjG+AP>YSShkR{&Am>(puCabGkaa*^f6`w`=~(hz|61%$Utj ze!oup z65#Nm+{m!jqaTYlsmWZNJFe8CHhXgbWpp+P81KO+pZVWSdsZilk?rU_j7l|?l zAF25ha%)kELr-dT`a47EWy^1u*5hO9=2JScIRW)@X6DU2Ej~k&^HaK7YQ}z#TR(a) z9}Zy#$3M*rO3hN2HKiSHtpUOfl038wx)8Rxi4l;XT|_O2Dp~F%aA3dHrcwqF%n|Kh z!be}2EH7Y{8Up}TO&^JKf{LkykKfxGw>t9@_blEhYyo~Wg>PmiLHJHV91`w9Rmyi8XX zo<6;6Sv*%-53&mnPPUr~+$3?OiitV-_hh7vJmr+9kLgv{bv0R}Vr;GTUjRBG*>+_&6g-)N8bk zUX=TUt{grsu-;K5*&)JeMBm?9DTzs`If%k9o%!8imGST~@tCPfP!QU!kzuMGMKakOnRWJqoe7~xMTKxv624`5J67KjuMgr)z4qqIK zjRn`=rc!`nTqtrnzvKJzO2YzL_Cr}4bJuO!Kfti5+N}zG39^M~A0Ua~k$j~QFN=!A zgOv`Rn#8b~6Mn~H-?kpxR8`gFv7~zs&f#b1W`?E@v!oVzg0R!cGpqqVfE}Aqa70Tj zF7nPVgtpCRq0>HL!{a6V{G$&5_2M(i`5|wA%LHNhGKl%?oS_s+*&|v{5UPN<`S@%Q zK&N-ZfRq;fiF&`cq@t)sK+<8HCY4ZeXyWH*eY{@Vk1FwMy}=c%-~Ki1~ ziVRgedT@jd$vqkR<_a7VI(TQzyW}~6M!=Q zOJo^E5g-HZQV-8`ee47HEx?8xfoP%Z0CjunP%yrwa4{X`;~{^tvwEH#0e#Qvp7Nuc z3p|+xISP_aC7O15xLi3l6M8R2Z)anK|2_f7I_yJ9+0psV+i@W2{G``;MhPe-K$_$` zp9UZ~PHcIknO5mGqYDuVV)q$JUB5*IWoDH zS$;?4rQip`l91fIMDy)~r7~nLIo&EntD1Kk%}mw+>)T$XO?hnEUf*Mj<=e(|4q3 z%cgDu`xx6>>iVx2V0QUrgMqvNz4vC7LGsX)Ld%YaZ|B1+52z9ZH^GU7~NuA@#93~N#w^4InDog@4D44W+ou#?K# zTEJZLOPpqK?I%B{20h!i_MOLe<3|8-CBLv#CVRiIc4X7b5c7OwSn`1JXhkq&?GIp1 z8ABpinU~XLg&mGZiOs@{w|pw(+;z;7B6hXe=&aM^WzD=jrYXzpdbUq(tkMY~XOS#^ zK{C9EqKMkwM8-41nBcTkS*s4q)>(ME3Z#8{_Us{0GHO7KNY%Krt#zuFDe#4bKdG(u zap;Z1k0MyZG>yFi#$5n6!hdHoxd~wE%{1K)@k{{+r@NT`vr{y|192|kivZ<~xHFhs z+PTJ#Yr&@hb%>e!4Y@4>|K*{H!f7|vr~2(+*r}<&w^TSB5N-1=LrPP`B^-g3 z0Y{xy)8^9t&NG$X2O|>L4Q;a#g}kP0eqk9q%X393Q_3$`Y1E-KG^o4C5;JNVo&3-} z04C-Nn8Cen1t3)7U2JhEU%izDYEiKx~5 z_GX3pt1UTps)|OYAK=q|jLVs>x;U%T*2Aq7*lISVXnufA*Y3p6;Y_!yUrAn^Nq+oO z8=d>mn{fBG!#cXvubSf4qiWx_sHzHWGbz5){WBA~bGM)h<=TxN+#^xq5|Q%Qpo=f* z9~-F8sa9ZxIx0`#ZFE&PcVz*xh~4XU%8qPpu(X;mv@=$f-yba8tM8Tq$TA&mw!HA| zAK?OgdbtrLr4s{IA-e_!4q86)m151G)Oo>;PWJ S$$-l>iELj7JO-Rh+P$5*!Lu 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 literal 0 HcmV?d00001 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..854f3b4 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,12 @@ +exceptiongroup==1.1.3 +iniconfig==2.0.0 +numpy==1.25.2 +packaging==23.1 +pandas==2.1.0 +pluggy==1.3.0 +pytest==7.4.1 +python-dateutil==2.8.2 +pytz==2023.3 +six==1.16.0 +tomli==2.0.1 +tzdata==2023.3 diff --git a/run_sql.py b/run_sql.py new file mode 100644 index 0000000..42916da --- /dev/null +++ b/run_sql.py @@ -0,0 +1,101 @@ +import sqlite3 +from sqlite3 import Error +import pandas as pd +import argparse +import os + +# Python script to execute a SQL statement and store the results in a CSV file. +# +# Usage: +# python3 run_sql.py [path_to_db] [path_to_sql] [path_to_csv] +# +# Where: +# +# path_to_db: the path to the sqlite3 database file. default is +# "data/fashion_magazines.db" +# +# path_to_sql: the path to the file containing the sql query. default is +# "sql/fashion_magazines.sql" +# +# path_to_csv: the path to the csv file that will be created with the results +# of the query. default is "data/fashion_magazines.csv" + + +def get_paths() -> tuple: + """Get the paths names from the arguments passed in + @return a tuple containing (path_to_db, path_to_sql, path_to_csv) + """ + parser = argparse.ArgumentParser() + parser.add_argument("db", nargs="?", + help="path to the sqlite3 database file", + default="db/fashion_magazines.db") + parser.add_argument("sql", nargs="?", + help="path to the file containing the sql query", + default="sql/fashion_magazines.sql") + parser.add_argument("csv", nargs="?", + help="path to the csv file that will be created", + default="data/fashion_magazines.csv") + args = parser.parse_args() + return args.db, args.sql, args.csv + + +def create_connection(path_to_db_file: str) -> sqlite3.Connection: + """ create a database connection to the SQLite database + specified by db_file + :param db_file: database file + :return: Connection object or None + """ + conn = None + try: + conn = sqlite3.connect(path_to_db_file) + return conn + except Error as e: + print(e) + + return conn + + +def get_sql(file_path: str) -> str: + """retrieve the SQL commands from a text file + @param: file_path - the path to the text file + @return: str - a string containing the contents of the file""" + fd = open(file_path, 'r') + sql = fd.read() + fd.close() + + return sql + + +def main() -> None: + path_to_db, path_to_sql, path_to_csv = get_paths() + conn = create_connection(path_to_db) + sql = get_sql(path_to_sql) + + if sql == "-- Add your SQL here" or sql == "": + print("Error: Add your sql to the sql/fashion_magazines.sql file before running.") + exit(1) + + if conn is not None: + movies = pd.read_sql(sql, conn) + + if len(movies) == 0: + print("Error: query did not return any results") + exit(1) + csv_dir = os.path.dirname(path_to_csv) + + if not os.path.exists(csv_dir): + os.makedirs(csv_dir) + + movies.to_csv(path_to_csv, index=False) + + else: + print("Error: Could not connect to database.") + exit(1) + + conn.close() + + return None + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/sql/create_db.sql b/sql/create_db.sql new file mode 100644 index 0000000..18dd803 --- /dev/null +++ b/sql/create_db.sql @@ -0,0 +1,73 @@ +DROP TABLE IF EXISTS subscriptions; +CREATE TABLE subscriptions ( + subscription_id INTEGER PRIMARY KEY, + description TEXT NOT NULL, + price_per_month INTEGER NOT NULL, + subscription_length INTEGER NOT NULL +); + +DROP TABLE IF EXISTS orders; +CREATE TABLE orders ( + order_id INTEGER PRIMARY KEY, + customer_id INTEGER NOT NULL, + subscription_id INTEGER NOT NULL, + purchase_date TEXT NOT NULL, + order_status TEXT NOT NULL, + FOREIGN KEY(customer_id) REFERENCES customers(customer_id), + FOREIGN KEY(subscription_id) REFERENCES subscriptions(subscription_id) +); + +DROP TABLE IF EXISTS customers; +CREATE TABLE customers ( + customer_id INTEGER PRIMARY KEY, + customer_name TEXT NOT NULL, + address TEXT NOT NULL +); + +INSERT INTO subscriptions (subscription_id, description, price_per_month, subscription_length) +VALUES +(1, 'Politics Magazine', 10, '12'), +(2, 'Politics Magazine', 11, '6'), +(3, 'Politics Magazine', 12, '3'), +(4, 'Fashion Magazine', 15, '12'), +(5, 'Fashion Magazine', 17, '6'), +(6, 'Fashion Magazine', 19, '3'), +(7, 'Sports Magazine', 11, '12'), +(8, 'Sports Magazine', 12, '6'), +(0, 'Sports Magazine', 13, '3'); + +INSERT INTO customers (customer_id, customer_name, address) +VALUES +(1, 'Allie Rahaim', '123 Broadway'), +(2, 'Jacquline Diddle', '456 Park Ave.'), +(3, 'Lizabeth Letsche', '789 Main St.'), +(4, 'Jessia Butman', '1 Columbus Ave.'), +(5, 'Inocencia Goyco', '12 Amsterdam Ave.'), +(6, 'Bethann Schraub', '29 Monticello'), +(7, 'Janay Priolo', '81 Harrisburg'), +(8, 'Ophelia Sturdnant', '31 Deerfield Ave.'), +(9, 'Eryn Vilar', '56 Morton St.'), +(10, 'Jina Farraj', '100 Bryan Ave.'); + +INSERT INTO orders (order_id, customer_id, subscription_id, purchase_date, order_status) +VALUES +(10, 1, 7, '2016-01-26 00:00:00', 'paid'), +(15, 1, 2, '2017-01-06 00:00:00', 'paid'), +(16, 1, 2, '2017-07-06 00:00:00', 'unpaid'), +(20, 1, 7, '2017-01-26 00:00:00', 'unpaid'), +(2, 2, 4, '2017-01-09 00:00:00', 'paid'), +(1, 3, 2, '2017-01-10 00:00:00', 'paid'), +(3, 3, 4, '2017-01-26 00:00:00', 'unpaid'), +(12, 3, 2, '2017-07-10 00:00:00', 'unpaid'), +(13, 3, 5, '2017-01-03 00:00:00', 'paid'), +(17, 3, 6, '2017-07-03 00:00:00', 'unpaid'), +(18, 3, 8, '2017-01-29 00:00:00', 'paid'), +(9, 4, 4, '2017-01-25 00:00:00', 'paid'), +(19, 4, 9, '2017-01-03 00:00:00', 'paid'), +(7, 5, 8, '2017-01-11 00:00:00', 'paid'), +(11, 5, 4, '2017-01-07 00:00:00', 'paid'), +(14, 6, 5, '2017-01-22 00:00:00', 'unpaid'), +(5, 7, 6, '2017-01-25 00:00:00', 'unpaid'), +(6, 8, 2, '2017-01-18 00:00:00', 'paid'), +(4, 9, 9, '2017-01-04 00:00:00', 'paid'), +(8, 9, 5, '2017-01-26 00:00:00', 'unpaid'); \ No newline at end of file diff --git a/sql/fashion_magazines.sql b/sql/fashion_magazines.sql new file mode 100644 index 0000000..4dd0555 --- /dev/null +++ b/sql/fashion_magazines.sql @@ -0,0 +1 @@ +-- Add your sql here \ No newline at end of file