推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
Mrkon
V2EX  ›  Python

在 web 开发中,以那种删除数据库中文章的方式最优雅

  •  
  •   Mrkon · May 22, 2018 · 7153 views
    This topic created in 3094 days ago, the information mentioned may be changed or developed.
    最近在学习 web 开发,想删除用户文章,以那种方式为最优雅的处理方式啊
    我的想法:
    1.通过文章标题的 hash 值
    2.标题和时间戳结合
    3.标题和 ID 值结合

    如果可以的话,请 V 友指出你们所用的方式,以及在哪里可以学到类似这种经验的书或文章。谢谢大家
    Supplement 1  ·  May 22, 2018
    谢谢大家,问题已经解决:
    可以通过文章的 ID 值查找进行删除,但是普遍的删除都为软删除(增加一个判断字段进行打标,然后可以使用定时任务,如 celery,对时间较长的打标文章进行删除)
    Supplement 2  ·  May 24, 2018
    根据 @sobigfish 所述的方式更好。

    “”“软删除用时间戳 deleted_at (timestamp) 更合适而不是单纯的 bool,因为同时记录了删除时间(除非另有 log/表记录删除时间等信息)”“”
    40 replies  •  2018-05-22 21:49:47 +08:00
    jennifertxwoodma
    jennifertxwoodma
    May 22, 2018
    1
    加一个字段,delete 删除就改成 true
    nullcc
    nullcc
    May 22, 2018
    2
    删除用户数据一般就是标记一下,不会真正做删除
    KimJongun
    KimJongun
    May 22, 2018
    3
    drop rable + create table
    Mrkon
    Mrkon
    OP
    May 22, 2018
    4
    @jennifertxwoodma 那相当于用户是不可以删除自己文章吗?只是用 delete 来决定是否隐藏文章,是这样吗?
    但是我现在还停留在设计字段,在数据库中查找这一篇文章的阶段。。。
    Mrkon
    Mrkon
    OP
    May 22, 2018
    5
    @nullcc
    了解了,谢谢。
    Mrkon
    Mrkon
    OP
    May 22, 2018
    6
    @KimJongun 这种方式是一个用户一个表的类型吗?我是把所有用户的文章放在一个表里面的,这样设计是否合理啊
    dovme
    dovme
    May 22, 2018
    7
    标记就可以,对用户来说,这就是删掉了.
    Mazexal
    Mazexal
    May 22, 2018
    8
    =.= 一般都是软删除的
    Mrkon
    Mrkon
    OP
    May 22, 2018
    9
    @dovme 谢谢,但是一般我需要通过怎样的方式找到表中的这个值啊。
    Mrkon
    Mrkon
    OP
    May 22, 2018
    10
    @Mazexal 我今天是第一次知道,一直都是直接删除,(⊙﹏⊙)
    SbloodyS
    SbloodyS
    May 22, 2018
    11
    逻辑删除代替物理删除~
    VoidChen
    VoidChen
    May 22, 2018
    12
    话说为什么要软删除呢(标记下就当删除了)
    InternetExplorer
    InternetExplorer
    May 22, 2018
    13
    文章表加个自增 id,根据自增 id 删除就好了,你是担心删错文章吗
    5dkgansm
    5dkgansm
    May 22, 2018
    14
    不会有人以为注销了帐号真的是删除了吧?
    Mrkon
    Mrkon
    OP
    May 22, 2018
    15
    @InternetExplorer 恩恩,是的,我是准备根据标题找到文章,然后删除这一行,然后用户可能会用相同的标题,就迷茫了。
    jennifertxwoodma
    jennifertxwoodma
    May 22, 2018
    16
    @KimJongun 头像还行
    clino
    clino
    May 22, 2018
    17
    楼主列出的 123 怎么理解?好像和删除并没有关系吧?
    Mrkon
    Mrkon
    OP
    May 22, 2018
    18
    @clino 我还停留在数据库查找的阶段。。。
    weizhen199
    weizhen199
    May 22, 2018
    19
    truncate 是最爽的
    joeke
    joeke
    May 22, 2018
    20
    一般都是软删除吧
    summerwar
    summerwar
    May 22, 2018
    21
    文章是个表,里面有自增 ID 和用户 id,用户 ID 用来区分谁发的文章,自增 ID 在删除的时候用,别用标题查询删除,因为会重复,不是 unique,容易误删标题一样的文章,删除的时候用个 status 来表示,删除为 0,不删除为 1。获取文章列表的时候,添加个过滤规则 status ==1 就行了。
    Patrick95
    Patrick95
    May 22, 2018
    22
    你说的三点我没怎么理解,一般来讲通过文章 ID 来进行删除就可以。
    DELETE FROM table WHERE id = [:id];
    或者软删除
    UPDATE table SET deleted = 1 WHERE id = [:id];
    balamiao
    balamiao
    May 22, 2018
    23
    一般都不是立即删除,属于打标,在查询逻辑中剔除掉删除的即可。

    可以配合后台定时任务,处理比如 30 天以前已经打标删除的文章!
    zzzwwwlll
    zzzwwwlll
    May 22, 2018
    24
    你这想的太复杂了,直接根据 id 删除就行
    Mrkon
    Mrkon
    OP
    May 22, 2018
    25
    @Patrick95
    @summerwar
    @balamiao
    @zzzwwwlll
    谢谢,问题我已经明白了,直接通过 ID 软删除。
    wemore
    wemore
    May 22, 2018 via Android
    26
    有个疑问哈,逻辑删除的话那对需要删除表的改查都要加个查询字段,会不会太麻烦了,有啥办法能解决这个问题。
    iConnect
    iConnect
    May 22, 2018
    27
    伪删除的做法,面向欧盟用户的话,是违反 GDPR 的。
    ycz0926
    ycz0926
    May 22, 2018
    28
    加个 status,不要真的删了,一来破坏了表与表间的关联,二来嘛,数据还是挺重要的,这东西决定了现代互联网的拓扑和连接方式
    ycz0926
    ycz0926
    May 22, 2018
    29
    @ycz0926 没数据,你还怎么玩,是不?
    run2
    run2
    May 22, 2018❤️2
    30
    @jennifertxwoodma #1 @Patrick95 #22
    软删除用时间戳 deleted_at (timestamp) 更合适而不是单纯的 bool,因为同时记录了删除时间(除非另有 log/表记录删除时间等信息)
    soho176
    soho176
    May 22, 2018
    31
    https://www.douban.com/group/topic/36082266/ 是这种?用户注销了,但是用户数据却保留了
    Mrkon
    Mrkon
    OP
    May 22, 2018
    32
    @soho176 是用户自己删除他的文章。现在才发现大家都是用的软删除,汗。。
    jennifertxwoodma
    jennifertxwoodma
    May 22, 2018
    33
    @sobigfish 嗯嗯,如果空间足够大的话,你的做法比较好。
    andylsr
    andylsr
    May 22, 2018 via Android
    34
    @KimJongun 这是什么路子。。。
    andylsr
    andylsr
    May 22, 2018 via Android
    35
    @Mrkon 互联网企业不存在删除操作。。。
    qf19910623
    qf19910623
    May 22, 2018
    36
    @Mrkon 写程序的原则是尽可能给自己留后路
    CoderGeek
    CoderGeek
    May 22, 2018
    37
    isdel 不可能真正删除用户的文章 而且 一般还会保存几个历史版本 QAQ
    loveCoding
    loveCoding
    May 22, 2018
    38
    逻辑删除
    lk1ngaa7
    lk1ngaa7
    May 22, 2018
    39
    软删除
    Reficul
    Reficul
    May 22, 2018 via Android
    40
    created at,updated at 和 deleted at😂😂
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1238 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 89ms · UTC 23:48 · PVG 07:48 · LAX 15:48 · JFK 18:48
    ♥ Do have faith in what you're doing.