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

打印 上一主题 下一主题

主题 1044|帖子 1044|积分 3132

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. conn中的5个变量的寄义:
① Driver:数据库驱动程序,我利用的是SQL Server数据库。
② Server:数据库所在的服务器地址。
③ Database:要毗连的数据库的名称。
④ UID:登录 SQL Server 数据库的用户名。
⑤ PWD:密码。
2. prefixAll:数据模板前缀。
    handles:自定义名称。
  1. # -*- coding:utf-8 -*-
  2. """
  3. 作者:青鸟飞啊555
  4. 日期:2025年01月22日
  5. """
  6. import pyodbc
  7. import json
  8. from datetime import datetime
  9. def fetch_data_from_db():
  10.     conn = None
  11.     try:
  12.         # 连接到 SQL Server 数据库,根据实际情况修改连接信息
  13.         conn = pyodbc.connect(
  14.             "Driver={SQL Server};"
  15.             "Server=xxx.xxx.x.xxx;"
  16.             "Database=xxxx;"
  17.             "UID=xx;"
  18.             "PWD=xxxxxx;"
  19.         )
  20.         cursor = conn.cursor()
  21.         # 执行 SQL 查询
  22.         cursor.execute('''
  23.             SELECT
  24.                 DISTINCT(BPERNAME),
  25.                 C.POSTNAME,
  26.                 ORGANNAME,
  27.                 (CASE WHEN B.SEX= '00' THEN '男' ELSE '女' END) AS SEX
  28.             FROM
  29.                 ISM_TAG AS A
  30.                 LEFT JOIN PF_EMPLOYEE AS B ON A.BPERID= B.ID
  31.                 LEFT JOIN PF_POST C ON B.POSTID = C.ID
  32.                 LEFT JOIN PF_ORGAN D ON C.ORGANID= D.ID
  33.             WHERE
  34.                 BPERNAME != ''
  35.                 AND C.POSTNAME!= ''
  36.                 AND ORGANNAME != ''
  37.                 AND SEX != ''
  38.         ''')
  39.         rows = cursor.fetchall()
  40.         data = {
  41.             "prefixAll": "8x.5xx.7xxxx",
  42.             "handles": []
  43.         }
  44.         handle_counter = 1  # 用于生成 handle 编号
  45.         today = datetime.now().strftime("%Y%m%d")
  46.         for row in rows:
  47.             bpername, postname, organname, sex = row
  48.             handle = f"test{today}{str(handle_counter).zfill(3)}"
  49.             data["handles"].append({
  50.                 "handle": handle,
  51.                 "templateVersion": "人员测试",
  52.                 "data": [
  53.                     {"key": "personName", "value": bpername},
  54.                     {"key": "organName", "value": organname},
  55.                     {"key": "bperName", "value": bpername},
  56.                     {"key": "sex", "value": sex}
  57.                 ]
  58.             })
  59.             handle_counter += 1
  60.         return data
  61.     except pyodbc.Error as e:
  62.         print("数据库操作错误:", e)
  63.     finally:
  64.         if conn:
  65.             conn.close()
  66. def save_data_to_json(data):
  67.     try:
  68.         with open('data.json', 'w+', encoding='utf-8') as file:
  69.             json.dump(data, file, ensure_ascii=False, indent=4)
  70.         print("数据已成功保存到 data.json 文件中。")
  71.     except IOError as e:
  72.         print("保存文件时出错:", e)
  73. def main():
  74.     data = fetch_data_from_db()
  75.     if data:
  76.         save_data_to_json(data)
  77. if __name__ == "__main__":
  78.     main()
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莫张周刘王

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表