@@ -19,3 +19,74 @@ f = cs50.get_float();
1919i = cs50.get_int();
2020s = cs50.get_string();
2121```
22+
23+ ## Testing
24+
25+ 1 . Run ` cli50 ` in ` python-cs50 ` .
26+ 1 . Run ` sudo su - ` .
27+ 1 . Run ` apt install -y libmysqlclient-dev mysql-server postgresql ` .
28+ 1 . Run ` pip3 install mysqlclient psycopg2-binary ` .
29+ 1 . In ` /etc/mysql/mysql.conf.d/mysqld.cnf ` , add ` skip-grant-tables ` under ` [mysqld] ` .
30+ 1 . In ` /etc/profile.d/cli.sh ` , remove ` valgrind ` function for now.
31+ 1 . Run ` service mysql start ` .
32+ 1 . Run ` mysql -e 'CREATE DATABASE IF NOT EXISTS test;' ` .
33+ 1 . In `/etc/postgresql/10/main/pg_hba.conf, change:
34+ ```
35+ local all postgres peer
36+ host all all 127.0.0.1/32 md5
37+ ```
38+ to:
39+ ```
40+ local all postgres trust
41+ host all all 127.0.0.1/32 trust
42+ ```
43+ 1 . Run ` service postgresql start ` .
44+ 1 . Run ` psql -c 'create database test;' -U postgres ` .
45+ 1 . Run ` touch test.db ` .
46+
47+ ### Sample Tests
48+
49+ ```
50+ import cs50
51+ db = cs50.SQL("sqlite:///foo.db")
52+ db.execute("CREATE TABLE IF NOT EXISTS cs50 (id INTEGER PRIMARY KEY, val TEXT, bin BLOB)")
53+ db.execute("INSERT INTO cs50 (val) VALUES('a')")
54+ db.execute("INSERT INTO cs50 (val) VALUES('b')")
55+ db.execute("BEGIN")
56+ db.execute("INSERT INTO cs50 (val) VALUES('c')")
57+ db.execute("INSERT INTO cs50 (val) VALUES('x')")
58+ db.execute("INSERT INTO cs50 (val) VALUES('y')")
59+ db.execute("ROLLBACK")
60+ db.execute("INSERT INTO cs50 (val) VALUES('z')")
61+ db.execute("COMMIT")
62+
63+ ---
64+
65+ import cs50
66+ db = cs50.SQL("mysql://root@localhost/test")
67+ db.execute("CREATE TABLE IF NOT EXISTS cs50 (id INTEGER PRIMARY KEY, val TEXT, bin BLOB)")
68+ db.execute("INSERT INTO cs50 (val) VALUES('a')")
69+ db.execute("INSERT INTO cs50 (val) VALUES('b')")
70+ db.execute("BEGIN")
71+ db.execute("INSERT INTO cs50 (val) VALUES('c')")
72+ db.execute("INSERT INTO cs50 (val) VALUES('x')")
73+ db.execute("INSERT INTO cs50 (val) VALUES('y')")
74+ db.execute("ROLLBACK")
75+ db.execute("INSERT INTO cs50 (val) VALUES('z')")
76+ db.execute("COMMIT")
77+
78+ ---
79+
80+ import cs50
81+ db = cs50.SQL("postgresql://postgres@localhost/test")
82+ db.execute("CREATE TABLE IF NOT EXISTS cs50 (id SERIAL PRIMARY KEY, val VARCHAR(16), bin BYTEA)")
83+ db.execute("INSERT INTO cs50 (val) VALUES('a')")
84+ db.execute("INSERT INTO cs50 (val) VALUES('b')")
85+ db.execute("BEGIN")
86+ db.execute("INSERT INTO cs50 (val) VALUES('c')")
87+ db.execute("INSERT INTO cs50 (val) VALUES('x')")
88+ db.execute("INSERT INTO cs50 (val) VALUES('y')")
89+ db.execute("ROLLBACK")
90+ db.execute("INSERT INTO cs50 (val) VALUES('z')")
91+ db.execute("COMMIT")
92+ ```
0 commit comments