python利用第三方类库pandas处理csv excel 导入 导出 mssql sqlserver 的 demo

脚本功能

1 利用python 读取csv文件数据 输出 并写入到mssql sqlserver 数据库

2 利用python 从mssql sqlserver 数据库读取数据并写入到csv文件中

3 用到的三方库

      pandas 安装
      pip install pandas
      sqlalchemy 安装
      pip install sqlalchemy
      pymssql 安装
      pip install  pymssql

4 pandas.read_csv 分段读取方法

 pandas.read_csv() 文件 chunksize=5000 逐步执行 防止python 报 out of memory错误

5 python脚本 源码

# -*- coding: utf-8 -*-
# 导入必要模块
import pandas as pd
from sqlalchemy import create_engine


# 从csv读取数据到数据库表中
def imtomssql():
    # 初始化数据库连接,使用pymssql模块
    engine = create_engine('mssql+pymssql://sa:xxxxx@127.0.0.1/rujia', connect_args={'charset': 'utf8'},
                           echo=True)  # 初始化数据库连接
    # 读取本地CSV文件
    path = open(unicode('E:/泄露互联网/rujia2000w/1-200W.csv', 'UTF8'), 'r')
    # 设置成一批执行2万条
    df = pd.read_csv(path, sep=',', encoding='utf-8', chunksize=5000, iterator=True, low_memory=False)
    # df = pd.read_csv("./web.csv", sep=',', encoding='utf-8')
    # print(df['instance_description'])
    # 将新建的DataFrame储存为sqlserver中的数据表,表如果存在 则 继续拼接 不储存index列
    for chunk in df:
        chunk.to_sql('rujia-python', engine, if_exists='append', index=False)
        print(" running Write to sqlserver...")
    print("Write to sqlserver  successfully!")


# 从数据库中读取数据输出到csv文件中
def readfrommysql():
    # 初始化数据库连接,使用pymysql模块
    engine = create_engine('mssql+pymssql://sa:xxxxx@127.0.0.1/rujia', echo=True)
    # 查询语句,选出sys_log表中的所有数据
    sql = ''' 
     select *  from [1000W-1200W] where Name='王X伟' 
     '''
    # read_sql_query的两个参数: sql语句, 数据库连接
    df = pd.read_sql_query(sql, engine)
    # 输出sys_log表的查询结果
    print(df)
    df.to_csv('export.csv', encoding='utf-8')

    # 新建pandas中的DataFrame, 只有id,num两列
    # df = pd.DataFrame({'id': [1, 2, 3, 4], 'num': [12, 34, 56, 89]})
    # 将新建的DataFrame储存为MySQL中的数据表,不储存index列
    # df.to_sql('mydf001', engine, index=False)
    print('Read from and write to mssql  sqlserver table successfully!')


if __name__ == "__main__":
    # 导入到sqlserver库
    imtomssql()
    # readfrommysql()


  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

prefectjava

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值