一个把json数据批量插入SQL SERVER 的Python脚本

原创 2017年08月24日 11:37:30

这是一个把json数据批量插入SQL SERVER 的Python脚本
本文参考了pymssql的官方文档
http://www.pymssql.org/en/stable/pymssql_examples.html


#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import pymssql
import json
 
DB_SETTINGS = {'host''127.0.0.1',
               'port''1433',
               'user''sa',
               'password''password',
               'database''test'}
 
class SQLSERVER:
    """database"""
 
    def __init__(self, settings_):
        """initial db"""
        self.conn = pymssql.connect(**settings_)
        self.cur = self.conn.cursor()
 
    def exec_many(self, sql_str, data_):
        self.cur.executemany(sql_str, data_)
        self.conn.commit()
 
    def exec_sql(self, sql_str):
        self.cur.execute(sql_str)
        ret = self.cur.fetchall()
        return ret
 
    def close(self):
        self.cur.close()
        self.conn.close()
 
 
json_data = """
[
  {
    "Indicator":"Life expectancy at birth (years)",
    "PUBLISH STATES":"Published",
    "Year":1990,
    "WHO region":"Europe",
    "World Bank income group":"High-income",
    "Country":"Andorra",
    "Sex":"Both sexes",
    "Display Value":77,
    "Numeric":77.00000,
    "Low":"",
    "High":"",
    "Comments":""
  },
  {
    "Indicator":"Life expectancy at birth (years)",
    "PUBLISH STATES":"Published",
    "Year":2000,
    "WHO region":"Europe",
    "World Bank income group":"High-income",
    "Country":"Andorra",
    "Sex":"Both sexes",
    "Display Value":80,
    "Numeric":80.00000,
    "Low":"",
    "High":"",
    "Comments":""
  },
  {
    "Indicator":"Life expectancy at age 60 (years)",
    "PUBLISH STATES":"Published",
    "Year":2012,
    "WHO region":"Europe",
    "World Bank income group":"High-income",
    "Country":"Andorra",
    "Sex":"Female",
    "Display Value":28,
    "Numeric":28.00000,
    "Low":"",
    "High":"",
    "Comments":""
  },
  {
    "Indicator":"Life expectancy at age 60 (years)",
    "PUBLISH STATES":"Published",
    "Year":2000,
    "WHO region":"Europe",
    "World Bank income group":"High-income",
    "Country":"Andorra",
    "Sex":"Both sexes",
    "Display Value":23,
    "Numeric":23.00000,
    "Low":"",
    "High":"",
    "Comments":""
  }
]
"""
 
db = SQLSERVER(DB_SETTINGS)
 
items = json.loads(json_data)
 
# with open(r'd:\temp\source.json', 'r') as json_file:    # 如果从文件中载入数据
#    items = json.load(json_file)
 
fields = ("Indicator""PUBLISH STATES""Year""WHO region""World Bank income group",
          "Country""Sex""Display Value""Numeric""Low""High""Comments")
 
sql = 'INSERT INTO table_name VALUES (%s, %s, %d, %s, %s, %s, %s, %d, %f, %s, %s, %s);'
 
data = [tuple(item[field] for field in fields) for item in items]
db.exec_many(sql, data)
 
db.close()


批量执行SQL SERVER脚本 Python脚本

  • 2017年05月27日 18:35
  • 3KB
  • 下载

批量高效向sqlserver中插入数据

原文:http://blog.csdn.net/tjvictor/article/details/4360030  表值参数是SQL Server 2008新特性,简称TVPs   代...
  • zy0421911
  • zy0421911
  • 2016-09-13 11:47:09
  • 2040

【SQL Server 批量插入数据】

在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题。下面介绍SQL Server支持的两种批量...
  • heyangyi_19940703
  • heyangyi_19940703
  • 2016-07-21 12:43:50
  • 3336

SQL Server 2008 批量插入数据时报错

前几天在SQL Server 2008同步产品数据时,总是提示二进制文本被截断的错误,但是经过检查发现数据都符合格式要求。 百思不得其解,单独插入一条条数据则可以插入,但是批量导入则报错。      ...
  • weizhiai12
  • weizhiai12
  • 2013-08-09 20:41:00
  • 1499

mybatis 与sqlserver相关的批量插入的问题

项目上遇到一个关于sqlserver批量插入的问题,持久层框架是mybatis; 开始采用的批量插入方法如下图: INSERT INTO numas_qos_cri_rating_level(cri_...
  • qq_28364999
  • qq_28364999
  • 2017-06-28 15:03:06
  • 1165

sql server 国家区域数据脚本

  • 2017年05月24日 10:56
  • 1.99MB
  • 下载

VC++实现批量大容量快速插入SqlServer数据库

1. 概述 使用c++访问数据库的方法很多,由于我访问的是sqlserver数据库,于是上MSDN查了一下有哪些访问技术,主要有以下几种: ODBC  OLEDBADO ADO是OLEDB的封装...
  • winnyrain
  • winnyrain
  • 2017-06-30 16:09:42
  • 853

SqlServer——批量操作(批量添加,删除)

批量添加数据: 一条insert语句批量插入多条记录 常见的insert语句,向数据库中,一条语句只能插入一条数据: insert into persons  (id_p, lastname ...
  • shuai7boy
  • shuai7boy
  • 2016-11-17 17:22:39
  • 480

java 高效批量插入 sqlserver 数据库

@Test public void clockingIn_Img() throws Exception{ DbJdbc idb = DbMaster.getIDB("JXT"); List ...
  • longtingjing
  • longtingjing
  • 2016-10-02 19:46:30
  • 5139

C#批量插入大数据到SQL server

C#批量插入数据到SQL server的四种方式
  • jacksonxin
  • jacksonxin
  • 2016-12-26 21:42:02
  • 1390
收藏助手
不良信息举报
您举报文章:一个把json数据批量插入SQL SERVER 的Python脚本
举报原因:
原因补充:

(最多只允许输入30个字)