@@ -19,3 +19,74 @@ f = cs50.get_float();
19
19
i = cs50.get_int();
20
20
s = cs50.get_string();
21
21
```
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