<p>这是mini-twit函数的浓缩版,我用它来做实验。在</p>
<p>createDB,顾名思义,创建一个数据库并允许您用数据填充它。在</p>
<p>requestDat,有一些对数据库的查询示例。
[如果您提出了更多的查询来缩小实际数据值,比如从id索引plz post]</p>
<p>在创建数据库.py在</p>
<pre><code>from hashlib import md5
from werkzeug import check_password_hash, generate_password_hash
from CodernityDB.database_thread_safe import ThreadSafeDatabase
from CodernityDB.database import RecordNotFound
#indexTypes
from CodernityDB.hash_index import HashIndex
from CodernityDB.tree_index import TreeBasedIndex
class UserIndex(HashIndex):
def __init__(self, *args, **kwargs):
kwargs['key_format'] = '16s'
super(UserIndex, self).__init__(*args, **kwargs)
def make_key_value(self, data):
if data['t'] == 'user':
username = data['username']
return md5(username).digest(), {'user_id': data['user_id'], 'email': data['email']}
def make_key(self, key):
return md5(key).digest()
class UserIDIndex(HashIndex):
def __init__(self, *args, **kwargs):
kwargs['key_format'] = 'I'
super(UserIDIndex, self).__init__(*args, **kwargs)
def make_key_value(self, data):
if data['t'] == 'user':
user_id = data['user_id']
return user_id, {'username': data['username'], 'email': data['email']}
def make_key(self, key):
return key
#Functions
def register(username_input,email_input,password_input):
"""Registers the user."""
try:
cdb.get('user', username_input, with_storage=False)
except RecordNotFound:
cdb.insert(dict(
t='user',
user_id=cdb.count(cdb.all, 'user') + 1, # do not use in production!
username=username_input,
email=email_input,
pw_hash=generate_password_hash(password_input)))
print('You were successfully registered')
else:
print('The username is already taken')
# configuration
DATABASE = 'testDB'
SECRET_KEY = 'development key'
cdb = ThreadSafeDatabase(DATABASE)
#main
def main():
if cdb.exists():
cdb.open()
cdb.reindex()
else:
#from database_indexes import UserIndex, MessageAllIndex, MessageUserIndex, FollowerRel1Index, FollowerRel2Index, UserIDIndex, FollowerIndex
cdb.create()
cdb.add_index(UserIndex(cdb.path, 'user'))
cdb.add_index(UserIDIndex(cdb.path, 'user_id'))
#test insert
username_input="none"
print("type 'n' to end database population")
while username_input != "n":
username_input = raw_input("new username: ")
email_input = raw_input("new email: ")
password_input = raw_input("new password: ")
register(username_input,email_input,password_input)
#Run Main
if __name__ == '__main__':
main()
</code></pre>
<p>在请求日期.py在</p>
^{pr2}$