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
————