美文网首页
Python 数据库格式化输出文档

Python 数据库格式化输出文档

作者: 善斋书社 | 来源:发表于2021-03-05 11:15 被阅读0次
    • 问题

      如果文案格式是统一的,是否可以通过Python格式化输出doc/md的文档?

      能用代码搞定的,尽力不手工

    • 思路

      首先,数据已经录入库,需要python能读取数据库,可使用mysql-connector

      其次,格式化输出的文档,肯定需要文件读写操作,需使用os

      接着,考虑到各大平台多数支持markdown格式,优先输出md格式文档。若输出doc,需使用docx

      补充,python一键执行,分页数据操作,接收外部参数,需使用sys

    • 编码

      • 分页获取数据库内容
      import mysql.connector
      
      # 数据库中page页数据
      def fetch_data_from_db(page):
          cmd = 'select * from xxx order by id limit ' + str(page * 50) + ', ' + str(50)
          conn = mysql.connector.connect(user='xxx', password='xxx', database='xxx')
          cursor = conn.cursor()
          cursor.execute(cmd)
          values = cursor.fetchall()
          conn.commit()
          cursor.close()
          conn.close()  
          return values 
      
      • 格式化输出md文档,md中添加表格样式
      import os
      # python输出表格
      def export_format_md(page, books):
          fileName = '善斋书屋第' + str(page) + '期.md'
          # 文件追加写入
          fd = open(fileName, 'a')
          fd.write('书目: \n<br>\n\n')
          fd.write('|索引|作者|书名|\n')
          fd.write('|:-|:-|:-|\n')
          for book in books:
              fd.write('|' + "{0:04d}".format(book[0]) + '|' + book[2] + '|' + book[1] + '\n')
      
      • 格式话输出doc文档
      from docx import Document
      from docx.shared import Cm
      
      def export_format_md(page, books):
          fileName = '善斋书屋第' + str(page) + '期.docx'
          document = Document()
          table = document.add_table(rows = 51, cols = 3) # 设置行列数
          table.cell(0, 0).text = "索引"
          table.cell(0, 1).text = "作者"
          table.cell(0, 2).text  = "书名"
          for index, book in enumerate(books):
              table.cell(index+1, 0).text = "{0:05d}".format(book[0])
              table.cell(index+1, 1).text = book[2]
              table.cell(index+1, 2).text = book[1]
          document.save(fileName)
      
      • 外部传参获取
      if __name__ == '__main__':
          args = sys.argv
          if len(args) == 2:
              # 获取分页
              page = args[1] 
              books = fetch_data_from_db(page)
              export_format_md(page, books)
      
      • 一键执行
      python3 xxxx.py 0
      
    • Over

    相关文章

      网友评论

          本文标题:Python 数据库格式化输出文档

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