莫张周刘王 发表于 2025-1-26 11:43:11

python远程获取数据库中的相关数据并存储至json文件

1. conn中的5个变量的寄义:
① Driver:数据库驱动程序,我利用的是SQL Server数据库。
② Server:数据库所在的服务器地址。
③ Database:要毗连的数据库的名称。
④ UID:登录 SQL Server 数据库的用户名。
⑤ PWD:密码。
2. prefixAll:数据模板前缀。
    handles:自定义名称。
# -*- coding:utf-8 -*-
"""
作者:青鸟飞啊555
日期:2025年01月22日
"""
import pyodbc
import json
from datetime import datetime

def fetch_data_from_db():
    conn = None
    try:
      # 连接到 SQL Server 数据库,根据实际情况修改连接信息
      conn = pyodbc.connect(
            "Driver={SQL Server};"
            "Server=xxx.xxx.x.xxx;"
            "Database=xxxx;"
            "UID=xx;"
            "PWD=xxxxxx;"
      )
      cursor = conn.cursor()
      # 执行 SQL 查询
      cursor.execute('''
            SELECT
                DISTINCT(BPERNAME),
                C.POSTNAME,
                ORGANNAME,
                (CASE WHEN B.SEX= '00' THEN '男' ELSE '女' END) AS SEX
            FROM
                ISM_TAG AS A
                LEFT JOIN PF_EMPLOYEE AS B ON A.BPERID= B.ID
                LEFT JOIN PF_POST C ON B.POSTID = C.ID
                LEFT JOIN PF_ORGAN D ON C.ORGANID= D.ID
            WHERE
                BPERNAME != ''
                AND C.POSTNAME!= ''
                AND ORGANNAME != ''
                AND SEX != ''
      ''')
      rows = cursor.fetchall()
      data = {
            "prefixAll": "8x.5xx.7xxxx",
            "handles": []
      }
      handle_counter = 1# 用于生成 handle 编号
      today = datetime.now().strftime("%Y%m%d")
      for row in rows:
            bpername, postname, organname, sex = row
            handle = f"test{today}{str(handle_counter).zfill(3)}"
            data["handles"].append({
                "handle": handle,
                "templateVersion": "人员测试",
                "data": [
                  {"key": "personName", "value": bpername},
                  {"key": "organName", "value": organname},
                  {"key": "bperName", "value": bpername},
                  {"key": "sex", "value": sex}
                ]
            })
            handle_counter += 1
      return data
    except pyodbc.Error as e:
      print("数据库操作错误:", e)
    finally:
      if conn:
            conn.close()


def save_data_to_json(data):
    try:
      with open('data.json', 'w+', encoding='utf-8') as file:
            json.dump(data, file, ensure_ascii=False, indent=4)
      print("数据已成功保存到 data.json 文件中。")
    except IOError as e:
      print("保存文件时出错:", e)


def main():
    data = fetch_data_from_db()
    if data:
      save_data_to_json(data)


if __name__ == "__main__":
    main()

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: python远程获取数据库中的相关数据并存储至json文件