Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite782fad

Browse files
Address Serhiy's offline remark: coerce keys/values to bytes
1 parentbc849c3 commite782fad

File tree

2 files changed

+44
-35
lines changed

2 files changed

+44
-35
lines changed

‎Lib/dbm/sqlite3.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77

88
BUILD_TABLE="""
99
CREATE TABLE IF NOT EXISTS Dict (
10-
keyTEXT UNIQUE NOT NULL,
10+
keyBLOB UNIQUE NOT NULL,
1111
value BLOB NOT NULL
1212
)
1313
"""
1414
GET_SIZE="SELECT COUNT (key) FROM Dict"
1515
LOOKUP_KEY="SELECT value FROM Dict WHERE key = ?"
16-
STORE_KV="REPLACE INTO Dict (key, value) VALUES (?, ?)"
16+
STORE_KV="REPLACE INTO Dict (key, value) VALUES (CAST(? AS BLOB), CAST(? AS BLOB))"
1717
DELETE_KEY="DELETE FROM Dict WHERE key = ?"
1818
ITER_KEYS="SELECT key FROM Dict"
1919

‎Lib/test/test_dbm_sqlite3.py

Lines changed: 42 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -61,31 +61,31 @@ class ReadOnly(_SQLiteDbmTests):
6161
defsetUp(self):
6262
super().setUp()
6363
withdbm_sqlite3.open(self.filename,"w")asdb:
64-
db["key1"]="value1"
65-
db["key2"]="value2"
64+
db[b"key1"]="value1"
65+
db[b"key2"]="value2"
6666
self.db=dbm_sqlite3.open(self.filename,"r")
6767

6868
deftearDown(self):
6969
self.db.close()
7070
super().tearDown()
7171

7272
deftest_readonly_read(self):
73-
self.assertEqual(self.db["key1"],"value1")
74-
self.assertEqual(self.db["key2"],"value2")
73+
self.assertEqual(self.db[b"key1"],b"value1")
74+
self.assertEqual(self.db[b"key2"],b"value2")
7575

7676
deftest_readonly_write(self):
7777
withself.assertRaises(dbm_sqlite3.error):
78-
self.db["new"]="value"
78+
self.db[b"new"]="value"
7979

8080
deftest_readonly_delete(self):
8181
withself.assertRaises(dbm_sqlite3.error):
82-
delself.db["key1"]
82+
delself.db[b"key1"]
8383

8484
deftest_readonly_keys(self):
85-
self.assertEqual(self.db.keys(), ["key1","key2"])
85+
self.assertEqual(self.db.keys(), [b"key1",b"key2"])
8686

8787
deftest_readonly_iter(self):
88-
self.assertEqual([kforkinself.db], ["key1","key2"])
88+
self.assertEqual([kforkinself.db], [b"key1",b"key2"])
8989

9090

9191
classReadWrite(_SQLiteDbmTests):
@@ -108,19 +108,19 @@ def test_readwrite_unique_key(self):
108108
self.db["key"]="value"
109109
self.db["key"]="other"
110110
keys,vals=self.db_content()
111-
self.assertEqual(keys, ["key"])
112-
self.assertEqual(vals, ["other"])
111+
self.assertEqual(keys, [b"key"])
112+
self.assertEqual(vals, [b"other"])
113113

114114
deftest_readwrite_delete(self):
115115
self.db["key"]="value"
116116
self.db["new"]="other"
117117

118-
delself.db["new"]
118+
delself.db[b"new"]
119119
keys,vals=self.db_content()
120-
self.assertEqual(keys, ["key"])
121-
self.assertEqual(vals, ["value"])
120+
self.assertEqual(keys, [b"key"])
121+
self.assertEqual(vals, [b"value"])
122122

123-
delself.db["key"]
123+
delself.db[b"key"]
124124
keys,vals=self.db_content()
125125
self.assertEqual(keys, [])
126126
self.assertEqual(vals, [])
@@ -131,7 +131,7 @@ def test_readwrite_null_key(self):
131131

132132
deftest_readwrite_null_value(self):
133133
withself.assertRaises(dbm_sqlite3.error):
134-
self.db["key"]=None
134+
self.db[b"key"]=None
135135

136136

137137
classMisuse(_SQLiteDbmTests):
@@ -147,7 +147,7 @@ def tearDown(self):
147147
deftest_misuse_double_create(self):
148148
self.db["key"]="value"
149149
withdbm_sqlite3.open(self.filename,"c")asdb:
150-
self.assertEqual(db["key"],"value")
150+
self.assertEqual(db[b"key"],b"value")
151151

152152
deftest_misuse_double_close(self):
153153
self.db.close()
@@ -159,13 +159,13 @@ def test_misuse_invalid_flag(self):
159159

160160
deftest_misuse_double_delete(self):
161161
self.db["key"]="value"
162-
delself.db["key"]
162+
delself.db[b"key"]
163163
withself.assertRaises(KeyError):
164-
delself.db["key"]
164+
delself.db[b"key"]
165165

166166
deftest_misuse_invalid_key(self):
167167
withself.assertRaises(KeyError):
168-
self.db["key"]
168+
self.db[b"key"]
169169

170170
deftest_misuse_iter_close1(self):
171171
self.db["1"]=1
@@ -186,11 +186,11 @@ def test_misuse_iter_close2(self):
186186
deftest_misuse_use_after_close(self):
187187
self.db.close()
188188
withself.assertRaises(dbm_sqlite3.error):
189-
self.db["read"]
189+
self.db[b"read"]
190190
withself.assertRaises(dbm_sqlite3.error):
191-
self.db["write"]="value"
191+
self.db[b"write"]="value"
192192
withself.assertRaises(dbm_sqlite3.error):
193-
delself.db["del"]
193+
delself.db[b"del"]
194194
withself.assertRaises(dbm_sqlite3.error):
195195
len(self.db)
196196
withself.assertRaises(dbm_sqlite3.error):
@@ -208,7 +208,12 @@ def test_misuse_empty_filename(self):
208208

209209
classDataTypes(_SQLiteDbmTests):
210210

211-
dataset=10,2.5,"string",b"bytes"
211+
dataset= (
212+
# (raw, coerced)
213+
(42,b"42"),
214+
(3.14,b"3.14"),
215+
("string",b"string"),
216+
)
212217

213218
defsetUp(self):
214219
super().setUp()
@@ -219,16 +224,20 @@ def tearDown(self):
219224
super().tearDown()
220225

221226
deftest_datatypes_values(self):
222-
forvalueinself.dataset:
223-
withself.subTest(value=value):
224-
self.db["key"]=value
225-
self.assertEqual(self.db["key"],value)
227+
forraw,coercedinself.dataset:
228+
withself.subTest(raw=raw,coerced=coerced):
229+
self.db["key"]=raw
230+
self.assertEqual(self.db[b"key"],coerced)
226231

227232
deftest_datatypes_keys(self):
228-
forkeyinself.dataset:
229-
withself.subTest(key=key):
230-
self.db[key]="value"
231-
self.assertEqual(self.db[key],"value")
233+
forraw,coercedinself.dataset:
234+
withself.subTest(raw=raw,coerced=coerced):
235+
self.db[raw]="value"
236+
self.assertEqual(self.db[coerced],b"value")
237+
withself.assertRaises(KeyError):
238+
self.db[raw]
239+
withself.assertRaises(KeyError):
240+
delself.db[raw]
232241

233242

234243
classCorruptDatabase(_SQLiteDbmTests):
@@ -284,9 +293,9 @@ def test_corrupt_readwrite(self):
284293
deftest_corrupt_force_new(self):
285294
withclosing(dbm_sqlite3.open(self.filename,"n"))asdb:
286295
db["foo"]="write"
287-
_=db["foo"]
296+
_=db[b"foo"]
288297
next(iter(db))
289-
deldb["foo"]
298+
deldb[b"foo"]
290299

291300

292301
if__name__=="__main__":

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp