我正在玩Python 3的sqlite3
模块,并在此过程中熟悉SQL。
我编写了一个玩具程序来散列盐渍密码并将其存储,相关的用户名和盐存储到数据库中。我认为创建签名函数会很直观:
def store(table, data, database=':memory:')
可以调用为store('logins', {'username': 'bob', 'salt': 'foo', 'salted_hash' : 'bar'})
,并且能够单独添加到logins
新行中,bob
的值username
,{{1 } foo
,et caetera。
不幸的是,我淹没了SQL代码。我试图以“动态类型”方式执行此操作,因为我不会因存储错误类型而受到惩罚,或者能够随意添加新列。
我想要功能,清理所有输入:
我可以使用salt
作为后者,但它似乎非常严格。例如,如果列不存在会发生什么?我们怎么可以添加它们呢?
我不介意代码是针对Python 3的INSERT
定制的,还是仅仅作为大纲的SQL;只要我能够工作并在某种程度上使用它(并从中学习)我就非常感激。
(另一方面,我想知道我可以使用哪些其他方法而不是SQL'd关系数据库;我之前使用过亚马逊的SimpleDB,并考虑过将其用于此目的,因为它非常 “动态类型化”,但我想知道为此目的我必须使用哪些SQL代码。)