码迷,mamicode.com
首页 > 数据库 > 详细

007.PGSQL-python读取txt文件,将数据转化为dataFrame,dataFrame数据插入到pgsql; dataframe去掉索引,指定列为索引;python读取pgsql数据,读取数据库表导成excel

时间:2020-07-28 22:23:40      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:完整   range   ati   day   去掉   sele   space   如何   rom   

python读取txt文件,将数据转化为dataFrame,dataFrame数据插入到pgsql

1. pd.io.sql.to_sql(dataframe,‘table_name‘,con=conn,schema=‘w_analysis‘,if_exists=‘append‘)

2.df.to_sql(‘test0001‘, engine,schema=‘ioc_dw_second‘, if_exists=‘append‘, index=False) #增量入库

dataframe去掉索引,指定列为索引

#指定某一列为索引
df.set_index(‘rid‘,inplace=True)

1. 方法1

import numpy as np
import pandas as pd
from sqlalchemy import create_engine

#查看文件
list(open(C:/Users/James Murray/Desktop/test0001.txt))

#读取txt 
df_news = pd.read_table(C:/Users/James Murray/Desktop/test0001.txt,sep=\s+)
df=pd.DataFrame(df_news)
#指定某一列为索引
df.set_index(rid,inplace=True)
df
# 初始化引擎
connect = create_engine(postgresql+psycopg2://+yonghu+:+mima+@ip+:+str(duankou) + / + kuming)
# 写入数据 
pd.io.sql.to_sql(df,test0001,connect,schema=ioc_dw_second, if_exists=append)
connect.dispose()

2. 方法2  

if_exists=‘replace‘ #覆盖入库
if_exists=‘append‘  #增量入库
import pandas as pd
from sqlalchemy import create_engine

df_news = pd.read_table(C:/Users/James Murray/Desktop/test0001.txt,sep=\s+)
df=pd.DataFrame(df_news)
#指定某一列为索引
df.set_index(rid,inplace=True)
df
engine = create_engine(postgresql+psycopg2:// + yonghu + : + ‘mima + @ + ‘ip + : + str(duankou) + / + kuming)


# 配合pandas的to_sql方法使用十分方便(dataframe对象直接入库)
#df.to_sql(table, engine, if_exists=‘replace‘, index=False) #覆盖入库
# index=False ,索引行不插入表
df.to_sql(test0001, engine,schema=ioc_dw_second, if_exists=append, index=False)  #增量入库

 

附 :读取数据1

from string import Template
import numpy as np
import pandas as pd
from sqlalchemy import create_engine

#创建连接引擎
engine = create_engine(postgresql+psycopg2:// + yonghu + : + mima + @ + xx.xx.xx.xx + : + str(duabkou) + / + kuming)

#sql语句
=====================================
query_sql = """
       select * from ioc_dw_second.$arg1
       """
=====================================

query_sql = Template(query_sql) # template方法 字符串格式化

#表名
tablename = test0001
df1 = pd.read_sql_query(query_sql .substitute(arg1=tablename),engine) # 配合pandas的方法读取数据库值
df1

附 :读取数据2

import psycopg2
import openpyxl

conn = psycopg2.connect(database=xx,user=xxx,password=xx,host=xx.xx.xx.xx,port=xxx)

cur= conn.cursor()
cur.execute("select database_name,proc_name,proc_detail from ioc_ods.ud_ioc_proc_beifen limit 1" )
rows = cur.fetchall()

for row in rows:
    print("database_name = ",row[0])
    print("proc_name = ",row[1])
    print("proc_detail = ",row[2])
print("operation done succcessful") 
conn.close()

python读取pgsql数据,读取数据库表导成excel

# encoding:utf-8
import psycopg2
import openpyxl
from datetime import datetime

def database_excel():
    # 建立数据库连接
    conn = psycopg2.connect(database=kuming,user=yonghu,password=mima,host=ip,port=duankou)
    # 读取数据
    cur= conn.cursor()
    sql = ‘‘‘
        SELECT  nspname ,proname  , prosrc , CURRENT_TIMESTAMP as update_time 
        FROM    pg_catalog.pg_namespace n 
        JOIN    pg_catalog.pg_proc p 
        ON      pronamespace = n.oid 
        WHERE   nspname in (     
            ‘ioc_ods‘,  ‘ioc_support‘,‘ioc_standard‘,‘ioc_dm‘,‘ioc_dw‘,‘ioc_theme‘  
        )order by nspname
    ‘‘‘
    cur.execute(sql) 
    rows = cur.fetchall()

    wb = openpyxl.Workbook()
    wb.create_sheet(SHEET1,0)
    sheet = wb.get_sheet_by_name("SHEET1")

    today = datetime.today()
    today_date = datetime.date(today)

    myAlphbet = [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z]

    # 各列对应
    column_name = [库名,存储过程名称, 存储过程,更新时间]
    path = E:\\龙岗IOC10.101.27.15PGsql存储过程备份\\备份proc\\
    # 列名
    for i in range(len(column_name)) :
        loc = myAlphbet[i]+str(1)
        sheet[loc] = column_name[i]

    for i in range(len(rows)) :
        for j in range(len(rows[i])):
            loc = myAlphbet[j]+str(i+2)
            sheet[loc] = rows[i][j]

    wb.save(path+SHEET+_+str(today_date)+.xlsx)

if __name__ == __main__:

    database_excel()

    print("succeed")

 

 

当我们利用pandas处理完数据后,有时可能需要将处理好的数据保存到数据库中,这时需要利用sqlalchemy。
SQLAlchemy“采用简单的Python语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型”。
利用sqlalchemy,可以讲pandas类型的格式数据保存到数据库中,但是在使用过程中还是有很多坑的,下面简单介绍一下如何使用:
1:
import pandas as pd
from sqlalchemy import create_engine
导入模块中的create_engine,需要利用它来进行连接数据库
2:
conn = create_engine(‘mysql+mysqldb://root:123456@localhost:3306/w_analysis?charset=utf8‘)
创建连接,利用create_engine
3:
pd.io.sql.to_sql(dataframe,‘table_name‘,con=conn,schema=‘w_analysis‘,if_exists=‘append‘)
利用pd的io中的sql的to_sql方法进行导入(记住不是pd的to_sql)
4:
conn.dispose()
关闭连接
create_engine参数说明:
(mysql+mysqldb://用户名:密码@localhost:端口/数据库名?编码)? ? 设置数据库的编码方式,可以防止latin字符不识别而报错
to_sql参数说明:
(数据, ‘表名‘, con=连接键, schema=‘数据库名‘, if_exists=‘操作方式‘)? ? 操作方式有append、fail、replace
append:如果表存在,则将数据添加到这个表的后面
fail:如果表存在就不操作
replace:如果存在表,删了,重建
!!!这里提醒一下可能出现的错误:
ModuleNotFoundError: No module named ‘MySQLdb‘请看这里
注:pd 1.9以后的版本,除了sqllite,均需要通过sqlalchemy来设置

 

007.PGSQL-python读取txt文件,将数据转化为dataFrame,dataFrame数据插入到pgsql; dataframe去掉索引,指定列为索引;python读取pgsql数据,读取数据库表导成excel

标签:完整   range   ati   day   去掉   sele   space   如何   rom   

原文地址:https://www.cnblogs.com/star521/p/13393362.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!