美文网首页
碎片化总结

碎片化总结

作者: 苏尚君 | 来源:发表于2017-12-03 22:09 被阅读25次

    把自己日常工作中遇到的问题随手丢到这里,以便之后查阅,或者需要的时候总结成文

    技术

    1.postgres主键自增

    https://zhiwei.li/text/2012/02/15/postgresql%E4%B8%BB%E9%94%AE%E8%87%AA%E5%A2%9E/

    数据类型为 SERIAL

    2.服务器上vim查看中文乱码

    参考

    http://www.cnblogs.com/joeyupdo/archive/2013/03/03/2941737.html
    http://www.jianshu.com/p/Rww1Tp
    https://www.zhihu.com/question/22363620

    在 ~/.vimrc 中加入

    set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
    set termencoding=utf-8
    set encoding=utf-8
    

    3.url中文解析

    参考

    http://www.cnblogs.com/stemon/p/6602185.html

    Python 下的解法(Python 3)

    使用 urllib.parse.unquote 即可

    >>> import urllib.parse
    >>> urllib.parse.unquote('%E9%93%B8%E9%95%B0%E9%BE%99')
    '铸镰龙'
    

    4.大文件缓存

    参考:

    https://chenqx.github.io/2014/10/29/Python-fastest-way-to-read-a-large-file/

    虽然没用上……

    5.读取tar和zip

    tar: https://docs.python.org/3/library/tarfile.html

    zip: https://docs.python.org/3/library/zipfile.html

    6.python re

    (?P<regex_name>{regex}) 捕捉 {regex} 所代表的正则表达式所获取的对象,命名为 regex_name,方便使用,如:

    import re
    pattern = 'baidu_(?<part>.+)_info'
    items = re.search(pattern, 'baidu_baike_info')
    item = items.group('part')  # assert item == 'baike'
    

    https://docs.python.org/3/howto/regex.html

    7.不可见字符导致数据入库失败

    类似这样,要写入的文本:

    • 看到的字符:我是一个简书作者
    • 实际的字符串:"我是一个\x00简书作者"

    其中的十六进制空字符 \x00 不可见,但要入库则会报错。

    简单的做法就是用字符串的 replace 方法处理掉这些东西。据 xy 说还有用字符集过滤掉的方式,没试过,之后可尝试

    8.logging配置:日志分流(重定向分流)

    [loggers]
    keys=root
    
    [handlers]
    keys=infoHandler,warningHandler
    
    [logger_root]
    level=DEBUG
    handlers=infoHandler,warningHandler
    
    [handler_infoHandler]
    class=StreamHandler
    level=INFO
    formatter=simpleFormatter
    args=(sys.stdout,)
    
    [handler_warningHandler]
    class=StreamHandler
    level=WARNING
    formatter=simpleFormatter
    args=(sys.stderr,)
    
    [formatters]
    keys=simpleFormatter
    
    [formatter_simpleFormatter]
    format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s
    datefmt=%a, %d %b %Y %H:%M:%S
    

    9.SQL查询某个字段包含已知字符串

    https://zhidao.baidu.com/question/193581250.html

    SELECT * FROM some_table WHERE spec_column = '%已知的字符串%';
    

    10.SQL LIMIT OFFSET 用法

    https://www.postgresql.org/docs/8.2/static/queries-limit.html

    SELECT * FROM some_table WHERE cond LIMIT 100 OFFSET 2;
    

    上面这句的意思是:从表格 some_table 中取出满足 cond 的记录,从第 2+1 条开始查找,查找 100 条

    11.SQL排序

    http://www.w3school.com.cn/sql/sql_orderby.asp

    使用 ORDER BY colmn,来根据名为 column 的列的取值排列

    使用 DESC 逆序

    12.SQL JOIN

    分为INNER JOIN 和 (LEFT/RIGHT) OUTER JOIN
    前者要求联结的多张表中键值一定要存在;后者则允许某些键值是不存在的

    13.SQL 中取出的数值类型与定义有关,不可想当然认为一定是字符串。例如一个典型的 queryid 有时定义为 bigint,但是看起来就像一个全是数字的长字符串,于是本来想匹配已知的 queryid 来进行debug,用了 if queryid == '123',但已知没能进入 If 条件。后来在想,既然内容都有,但却对不上,拿是不是数值类型不匹配?打印 type 出来,发现都是 int,于是就明白了。

    14.原始数值存在,但输出csv却为空。如果用的是 Pandas 的 to_csv,可以注意一下,提供的 columns 与打印的 dict keys 是否一致(一一核对)

    15.tornado实现下载文件的方法

    http://yobin.sinaapp.com/topic/2923/Tornado%E7%9B%B4%E6%8E%A5%E4%B8%8B%E8%BD%BD%E6%96%87%E4%BB%B6%E7%9A%84%E6%96%B9%E6%B3%95
    https://blog.bbzhh.com/index.php/archives/52.html
    https://gist.github.com/alejandrobernardis/1790864
    https://en.wikipedia.org/wiki/MIME#Content-Disposition
    https://blog.robotshell.org/2012/deal-with-http-header-encoding-for-file-download/comment-page-1/

    关键部分

        self.set_header ('Content-Type', 'application/octet-stream')
        self.set_header ('Content-Disposition', 'attachment; filename='+filename)
        #读取的模式需要根据实际情况进行修改
        with open(filename, 'rb') as f:
            while True:
                data = f.read(buf_size)
                if not data:
                    break
                self.write(data)
        #记得有finish哦
        self.finish()
    

    注意必须 finish,否则无法下载

    16.命令行中打不出中文,怎么办?(ubuntu)

    http://forum.ubuntu.com.cn/viewtopic.php?f=77&t=277959

    命令行中运行

    sudo  dpkg-reconfigure locales
    

    然后选择

    en_US.UTF-8
    zh_CN.GB2312
    zh_CN.GB18030
    zh_CN.UTF-8
    zh_CN.GBK

    17.pandas合并,drop

    merge: https://pandas.pydata.org/pandas-docs/stable/merging.html

    drop: https://stackoverflow.com/questions/14661701/how-to-drop-a-list-of-rows-from-pandas-dataframe

    17.crontab 命令中,用 source 会导致命令无法执行

    相关文章

      网友评论

          本文标题:碎片化总结

          本文链接:https://www.haomeiwen.com/subject/pkizbxtx.html