From b33dce5edcd3d20a6686a719a84f0de8c1b4b412 Mon Sep 17 00:00:00 2001 From: Scott W Harden <swharden@gmail.com> Date: Thu, 1 Mar 2018 20:06:56 -0500 Subject: [PATCH] sqlite demo --- sql/demo/create.py | 63 ++++++++++++++++++++++++++++++++++-------- sql/demo/surgeries.db | Bin 24576 -> 24576 bytes 2 files changed, 52 insertions(+), 11 deletions(-) diff --git a/sql/demo/create.py b/sql/demo/create.py index a5112c1..07a71c1 100644 --- a/sql/demo/create.py +++ b/sql/demo/create.py @@ -13,10 +13,15 @@ VALUES (12,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); """ + + + import collections +import os +import sqlite3 -if __name__=="__main__": - with open (R"X:\Data\surgeries\surgery_log.csv") as f: +def csvToTable(fname="surgery_log.csv"): + with open (os.path.join(fname)) as f: raw=f.read().split("\n") rows=[] for line in raw: @@ -36,18 +41,54 @@ fields["dateSac"]=line[10] fields["notes"]=line[12] fields["hidden"]=0 - rows.append(fields) keys=list(fields.keys()) values=list(fields.values()) for i,val in enumerate(values): if type(val)==int: - val=str(val) - elif len(val)==0: - val='NULL' + values[i]=str(val) + elif len(val.strip())==0: + values[i]='NULL' else: - val="`%s`"%val - print(val) - #sqlIns="INSERT INTO `animals` ()" - #print(sql) - print() + values[i]="`%s`"%val + rows.append([keys,values]) + return rows + +def sqlInsertRow(row): + sqlKey,sqlVal=[],[] + for i in range(len(row[0])): + key,val=row[0][i],row[1][i] + sqlKey.append("`%s`"%key) + sqlVal.append(str(val)) + sql="INSERT INTO `animals` (%s) \nVALUES (%s);"%(", ".join(sqlKey),", ".join(sqlVal)) + return sql + +if __name__=="__main__": + # load data from the CSV file + rows=csvToTable() + + # create an empty database + conn = sqlite3.connect(r"surgeries.db") + c = conn.cursor() + c.execute("DROP TABLE `animals`") # delete the old data + + # create the database structure + sql=""" + CREATE TABLE "animals" ( `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, + `animal` TEXT NOT NULL, `originalCage` TEXT, `gender` NUMERIC, + `genotype` NUMERIC, `target` TEXT, `substance` TEXT, `volume` TEXT, + `coords` TEXT, `dateSx` TEXT, `dateSac` TEXT, `notes` TEXT, `hidden` INTEGER ); + """ + c.execute(sql.strip()) + + # copy CSV data into the new database + for row in rows: + sql=sqlInsertRow(row) + sql=sql.replace("`","'") + print(sql) + conn.execute(sql) print("DONE") + + # save database to disk + conn.commit() + conn.close() + print("DONE") \ No newline at end of file diff --git a/sql/demo/surgeries.db b/sql/demo/surgeries.db index 7dc2b8d00b2b15f09bfc90bf06b674704eb93e1e..8a45988465a557bc50fd032bb6c3fcdf994415ee 100644 GIT binary patch literal 24576 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 literal 24576 zcmeI)y^Gss90zd8@|z@EPfHrE#kf3VX-v-Mbm!bT9ZFmyf~oB!j?Cp+T3Kf+hryN- zNzO~59s06&3*Fj(qEm-Xp+knyB^^q;bm~+Z$WS`;dCoHDgyirL!C}6F=aKd3dGyos zksf0q$=9y7MxjG*c>cr=>6Y-CAd138N(DhsSW2@bv6NuxZI+TO%_njG;h4E1RKySS ztb(L95?Vuhpxw_u%0D`$1y(@-0uX=z1Rwwb2tWV=CsN?c*Wbvj?e2<Si=n+gc7j`D zb}6y%dv^lIw|vL7Cyq7n#?y&wxy~JH`AVrq*QlEYHS6!U4BB66!+m;Ik^7@zUv73x z<C4*(oy#We^ja-?rQ2-RyL<ElV~^H*=H+IGZNF`FOxo)-ul9^}*3foG6MNj3P2)Oi z6}99mJb!dBa_w=$K5%BMdFg@U4jsQQcY1B3+iXNdUU=^&tF%xU+WvtP9<>Xm`$1^C zgN04q=0Xe01JCn^!BLZ;9Xi+UKDTTSjtX2abfWr7X>>Zh_Svo|jM)C&oxxf5H1rOa zt)(O_eW_|`?Y@xZ=j9bCy>{-LxVLb8t-!f8byzo}J(w>hpE<D4tvt(5m~~dQBnV~J zje6l_-IyJ$z|x}+=`VKJnOG=@Um1rx5fw+XXV0cHQRx|+FV{__#IMa&^`St%BkyUy zX`gCu=6}eWxqous<SMKf69gat0SG_<0uX=z1R!ui1^TKc6y74IP8EygVzDH2x3;&d z)oN{XySAyf8|QcG?MuEhq}2^~((1lTbvkX8^~zRtoo-fY>$F<gIj`5s8+v);!fdYV zfiv*jAq}SNI@Z6}S7MJK#~vXYdxT8v5z?_oNW~r@8G8gN_6Ui%BYYyxBNW(}ekU5! zn=c&G#}DaRG^96fjQk*+kLc*DjNi-W_xLeE00Izz00bZa0SG_<0uX=z1R$_70x3xp z6A4L@Wq$u(Bu@nLg#5fR-9twp009U<00Izz00bZa0SG_<0xK#|QlwpRsrNP#sv;G{ z=q(6!_Wb{2fqYLcYJX^-YsLJJ`Hyn{=Dy9<)W<7|g>FFr0uX=z1Rwwb2tZ)91T6N$ ze&JPsSN|q}rNkY8-I|QI2idp-Wa18xjypgq?f}WS14wZPNW>iAV{snf@CAU`NPczC z|MNfjQ^`*P`Hws$f0Mt+pX7J)EBS>yBoA0ICI~<P0uX=z1Rwwb2tWV=5P$##PJjS^ ll3!JMt|&a0Wu9lVJkMl!o=)>TmEw6a$#Y5K`Rw`s{{fCzW6b~n