python的那些坑

python 连接DB2数据库

2019-04-24  本文已影响0人  Ziger丶
pandas 链接DB2数据库
注意事项:

1、就是一定记得要关闭连接。
2、读取数据只能一行一行读取,需要 result = ibm_db.fetch_both(stmt) 代码再调下一行

import ibm_db
conn = ibm_db.connect("DATABASE = dbname ;HOSTNAME= 输入IP ;PORT= 端口 ;PROTOCOL=  TCPIP ;UID= 用户名 ;PWD= 密码 ;", "", "")
--------------------- 
if conn:
    sql = "SELECT * FROM TJFX.DW_XSZT_FORECAST_CRM"
    stmt = ibm_db.exec_immediate(conn, sql)   #执行SQL
    result = ibm_db.fetch_both(stmt)    #一行一行的执行
    while (result):
        a = {
            '日期':result[0],
            '到店成单率电邀':float(result[1]),
            '线索到店率电邀':float(result[2]),
            '线索成单率自主':float(result[3]),
            '线索成单率门店':float(result[4]),
            '非线索成单号码数':int(result[5])
            }
        db2_data.append(a)
        result = ibm_db.fetch_both(stmt)
ibm_db.close(conn)
--------------------- 

一次性读取数据库。

参考自 https://blog.csdn.net/faith_mo_blog/article/details/80164557

import sqlalchemy
from sqlalchemy import *
import ibm_db_sa
engine = sqlalchemy.create_engine("ibm_db_sa://【用户名】:【密码】\
                                  @【地址】:【端口】/【数据库】?charset=utf8")
engine = sqlalchemy.create_engine("ibm_db_sa://zhaojiyang:izQSn)daI6LDrXfKhewT\
                                 @150.242.57.166:50000/aedw?charset=utf8")


a = pd.read_sql(sql, conn, index_col=None, coerce_float=True, \
                params=None, parse_dates=None, columns=None, chunksize=None)

data = pd.read_sql_query('select * from  TJFX.FACT_XSZT_FORECAST_KPI ',con = engine)

df = pd.read_sql_query(sql, engine)
pandas to_csv保存数据出现中文乱码问题
df = pd.read_csv(file_name, encoding='utf-8')
或者
df.to_csv(file_name3,encoding="utf_8_sig")
dataframe 存入数据库

pd.io.sql.to_sql(df,table_name,con=conn,schema='w_analysis',if_exists='append')

to_sql参数说明:
(数据,表名,con=连接键(上文提到的engine),schema='数据库名',if_exists='操作方式')    
操作方式有append、fail、replace

————

上一篇下一篇

猜你喜欢

热点阅读