python记录登录用户数据_python – 如何控制用户对键值数据库中记录的访问?

您描述的两种解决方案都有一些限制.

>您指出,在密钥中包含所有者ID并不能解决共享数据的问题.但是,如果添加另一个键/值对,包含与此用户共享的内容的ID(键:userId:shared,value:[id1,id2,id3 …]),则此解决方案可能是可接受的.

>当且仅当您的应用程序需要进行查询以检索有权访问特定内容的用户列表时,您的第二个提议(其中包括被授予对给定内容的访问权限的用户列表)是可以的.如果您需要列出给定用户可以访问的所有内容,此设计将导致您的性能不佳,因为K / V存储将必须扫描所有记录 – 这种类型的数据库引擎通常不允许您创建优化此类请求的索引.

从更一般的角度来看,对于NoSQL数据库,尤其是Key / Value存储,必须根据应用程序的请求来定义模型.它可能会导致您复制一些信息.应用程序负责维护数据的一致性.

例如,如果您需要获取给定用户的所有内容,无论该用户是内容的所有者还是与他共享这些内容,我建议您为该用户创建一个密钥,其中包含内容ID列表正如我已经说过的那样.但是,如果您的应用还需要获取允许访问给定内容的用户列表,则应在此内容的字段中添加其ID.这将导致类似于:

key:contentID,value:{…,[userId1,userID2 …]}

当您删除对用户的给定内容的访问权限时,您的应用程序(而不是数据存储区)必须从内容值中删除userId,并从该用户的内容列表中删除contentId.

此设计可能意味着您的应用程序发出多个请求:例如,一个用于获取允许访问给定内容的用户ID列表,以及一个或多个用于获取这些用户配置文件的用户ID.然而,这不应该是一个问题,因为K / V商店通常具有非常高的性能.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通常情况下,我们可以使用SQLAlchemy这个Python库来实现将函数返回值作为键值对存入数据库的操作。具体步骤如下: 1. 首先需要安装SQLAlchemy库,可以使用pip命令进行安装。 ```python pip install sqlalchemy ``` 2. 导入SQLAlchemy库,并创建数据库连接。 ```python from sqlalchemy import create_engine # 创建数据库连接 engine = create_engine('sqlite:///test.db') ``` 3. 定义一个表结构,用于存储键值数据。 ```python from sqlalchemy import Column, Integer, String from sqlalchemy.ext.declarative import declarative_base # 创建Base对象 Base = declarative_base() # 定义数据表结构 class KeyValue(Base): __tablename__ = 'keyvalue' id = Column(Integer, primary_key=True) key = Column(String(50), unique=True) value = Column(String(200)) ``` 4. 创建数据库表。 ```python # 在数据库创建数据表 Base.metadata.create_all(engine) ``` 5. 定义一个函数,将函数返回值作为键值对存入数据库。 ```python from sqlalchemy.orm import sessionmaker # 创建Session类 Session = sessionmaker(bind=engine) # 定义函数,将函数返回值作为键值对存入数据库 def store_data(key, value): session = Session() item = KeyValue(key=key, value=value) session.add(item) session.commit() session.close() ``` 6. 调用函数,将函数返回值作为键值对存入数据库。 ```python # 调用函数,将键值对存入数据库 store_data('name', '张三') store_data('age', '18') ``` 这样,就可以将函数的返回值作为键值对存入数据库了。在上面的例子,我们使用了SQLite数据库作为示例,实际上也可以使用其他类型的数据库,只需更改连接字符串即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值