精华内容
下载资源
问答
  • python 用pymssql 连接MS SQL Server数据库或用MySQLdb连接mysql数据库时,经常会遇到中文乱码问题。...为了提高解决问题效率,分析取到的数据的编码格式很重要。 推荐使用 chardet 做编码分析:CMD 下安装

    python 用pymssql连接MS SQL Server数据库或用MySQLdb连接mysql数据库时,经常会遇到中文乱码问题。

    为了提高解决问题效率,分析取到的数据的编码格式很重要。

    推荐使用 chardet 做编码分析。

    CMD 下用pip安装:pip install chardet;

    一个小栗子:
    >>>import chardet
    >>>a = '\xc4\xcf\xbc\xab\xb5\xe7\xc9\xcc'
    >>>chardet.detect(a)

    结果:

    {'confidence': 0.99, 'encoding': 'GB2312'}



    另一个栗子:

    >>>a = u'\xc4\xcf\xbc\xab\xb5\xe7\xc9\xcc'
    >>>print a
    Äϼ«µçÉÌ
    >>>b = a.encode('latin1').decode('GB2312')
    >>>b
    u'\u5357\u6781\u7535\u5546'
    >>>chardet.detect('\u5357\u6781\u7535\u5546')
    {'confidence': 1.0, 'encoding': 'ascii'}
    >>> print b
    南极电商

    用python从SQL Server中取到数据为unicode,但是直接print是乱码。数据库的存放是Latin1 所以先encode,经用chardet分析里面的实际编码是GB2312,所以再decode。保存的就不是乱码了。



    补充:2016/11/14

    上面的转换有点多余,而且有的时候会报异常,可以直接这样:

    >>> b= a.encode('raw_unicode_escape') #直接搞定
    >>>b
    '\xc4\xcf\xbc\xab\xb5\xe7\xc9\xcc'
    >>>print b
    南极电商
    >>> import chardet
    >>> chardet.detect(b)
    {'confidence': 0.99, 'encoding': 'GB2312'}



    参考:

    [1] pymssql中文显示乱码






    展开全文
  • Python实现数据库数据导入Excel

    千次阅读 2017-03-06 18:53:47
    之前已经使用SchemaSpy工具分析数据库的结构,之后就可以比较方便的将数据数据库导出到Excel等文件,这次我选择使用Python来完成这个工作。

    之前已经使用SchemaSpy工具分析了数据库的结构,之后就可以比较方便的将数据从数据库导出到Excel等文件中,这次我选择使用Python来完成这个工作。

    1 任务简介

    把PostgreSql数据库中5张表的数据导出到Excel文件中,查询的字段涉及到5张表,所以需要联合查询,其中还有两张表存在自引用,所以还会更复杂一些。


    2 工具

    • 使用psycopg2模块连接数据库
    • 使用xlwt模块操作Excel文件

    2.1 psycopg2

    这个模块用法很常规,

    • 连接数据库
    • 执行SQL
    • 获取结果

    重点在于SQL语句的构造,因为涉及多个表,所以不得已要使用join,那么为了考虑效率应当把数据量大的表放在小表的前面。


    2.2 xlwt

    这个模块用于写Excel文件,与之对应的还有xlrd来完成读文件的操作。
    用法也很简单,

    • 新建Excel文件
    • 新建sheet表
    • 定位起始单元格
    • 写内容
    • 保存&关闭文件

    需要注意的问题有两点:

    • 文件编码,新建文件时需要指明utf-8
    • 表格大小,由于xls文件最多只能到65535行,所以表过大的时候要么换xlsx格式,要么切分成多个表。Python处理xlsx的模块是xlsxwriter

    3 代码

    具体实现如下:

    #!/usr/bin/env python  
    # -*- coding: utf-8 -*-  
    
    import psycopg2
    import xlwt
    
    hostIp = '127.0.0.1'
    port = '5432'
    dbName = 'source'
    user = 'liuyueyi'
    password = 'password'
    
    
    sql = '''
    select site.name,study.name,sheets.id,sheets.patient_name,crf.label,section.label,form_rows.uid,form_rows.label,sheet_row_values.value 
    from sheet_row_values 
    inner join form_rows on form_rows.uid = sheet_row_values.uid 
    inner join form_groups section on section.id = form_rows.group_id
    inner join form_groups crf on section.parent_id = crf.id
    inner join sheets on sheets.id = sheet_row_values.sheet_id 
    inner join departments site on sheets.center_id = site.id 
    inner join departments study on site.parent_id = study.id;
    '''
    
    file = xlwt.Workbook(encoding='utf-8')
    
    sheet1 = file.add_sheet(u'sheet1')
    
    row0 = [u'site_name',u'study_name',u'sheets_id',u'patient_name',u'crf_name',u'section_name',u'form_rows_uid',u'form_rows_label',u'row_value']
    for i in range(0, len(row0)):
      sheet1.write(0,i,row0[i])
    
    
    conn = psycopg2.connect(database=dbName,host=hostIp,port=port,user=user,password=password)
    cur = conn.cursor()
    cur.execute(sql)
    rows = cur.fetchall()
    
    for i in range(0,len(rows)):
      for j in range(0,len(rows[i])):
        sheet1.write(i+1,j,rows[i][j])
    
    file.save('result.xls')
    
    展开全文
  • 1. Python连接Oracle数据库? 2. Python查询、提取Oracle数据库中数据? 3. 通过Python在Oracle数据库中创建表 4. Python数据插入到Oracle数据库中? 5. Python删除Oracle数据库中数据

    解决以下问题:

    1. Python连接Oracle数据库,并查询、提取Oracle数据库中数据?
    2. 通过Python在Oracle数据库中创建表
    3. Python数据插入到Oracle数据库中?
    4. Python删除Oracle数据库中数据?

    一、 Python连接Oracle数据库,并查询、提取Oracle数据库中数据?

    url='jdbc:oracle:thin:@ip:端口:实例名'
    user='username'
    password='password'
    dirver='oracle.jdbc.driver.OracleDriver'
    jarFile='/opt/ojdbc6.jar'
    sqlstr = '''select * from tablename'''
    conn=jaydebeapi.connect(dirver,url,[user,password],jarFile)
    df = pd.read_sql_query(sqlstr,conn)
    conn.close()
    

    二、 通过Python在Oracle数据库中创建表

    url='jdbc:oracle:thin:@ip:端口:实例名'
    user='username'
    password='password'
    dirver='oracle.jdbc.driver.OracleDriver'
    jarFile='/opt/ojdbc6.jar'
    conn=jaydebeapi.connect(dirver,url,[user,password],jarFile)
    curs1=conn.cursor()
    sqlStr1 = '''create table table tablename(
    name varchar(10) ,
    city varchar(10)
    )'''
    curs1.execute(sqlStr1)
    curs1.close()
    conn.close()
    

    tablename——表名
    name,city——列名

    三、 Python数据插入到Oracle数据库中

    df1 = pd.DataFrame(data = {name:[Lily,Jenny],city:[KunMing,ShangHai])
    #把df1中数据插入到表tablename中
    url='jdbc:oracle:thin:@ip:端口:实例名'
    user='username'
    password='password'
    dirver='oracle.jdbc.driver.OracleDriver'
    jarFile='/opt/ojdbc6.jar'
    conn=jaydebeapi.connect(dirver,url,[user,password],jarFile)
    curs1 = conn.cursor()
    for i in range(len(df1)):
    	sqlStr1 = '''insert into tablename values ('%s','%s'')'''%(df1.iloc[i][0],df1.iloc[i][1])
    curs1.execute(sqlStr1)
    curs1.close()
    conn.close()
    

    四、 Python删除Oracle数据库中数据

    url='jdbc:oracle:thin:@ip:端口:实例名'
    user='username'
    password='password'
    dirver='oracle.jdbc.driver.OracleDriver'
    jarFile='/opt/ojdbc6.jar'
    conn=jaydebeapi.connect(dirver,url,[user,password],jarFile)
    curs1 = conn.cursor()
    sqlStr1 = '''TRUNCATE table tablename'''
    curs1.execute(sqlStr1)
    curs1.close()
    conn.close()
    
    展开全文
  • Python数据库字段拆分数据

    千次阅读 2018-03-30 17:41:35
    7 Python案例7.2 拆分数据7.2.1 解析数据库字段里的数据需求:从数据库字段里解析得到结构化数据。解决方法:通过Python的pandas以及内置的函数完成该需求。 Python代码: import numpy as np import pandas as pd...

    7 Python案例

    7.2 拆分数据

    7.2.1 解析数据库字段里的数据

    需求:从数据库字段里解析得到结构化数据。

    解决方法:通过Python的pandas以及内置的函数完成该需求。

     

     Python代码:

     

    import numpy as np
    import pandas as pd
    import os
    from sqlalchemy import create_engine
    import pymysql
    conn = pymysql.connect(
            host='192.168.56.32',port = 3306,user='test',passwd='qwert@765',db ='mydb',charset='utf8'
    )
    
    def tidy_split(df, column, sep='|', keep=False):
        """
        Split the values of a column and expand so the new DataFrame has one split
        value per row. Filters rows where the column is missing.
    
        Params
        ------
        df : pandas.DataFrame
            dataframe with the column to split and expand
        column : str
            the column to split and expand
        sep : str
            the string used to split the column's values
        keep : bool
            whether to retain the presplit value as it's own row
    
        Returns
        -------
        pandas.DataFrame
            Returns a dataframe with the same columns as `df`.
        """
        indexes = list()
        new_values = list()
        df = df.dropna(subset=[column])
        for i, presplit in enumerate(df[column].astype(str)):
            values = presplit.split(sep)
            if keep and len(values) > 1:
                indexes.append(i)
                new_values.append(presplit)
            for value in values:
                indexes.append(i)
                new_values.append(value)
        new_df = df.iloc[indexes, :].copy()
        new_df[column] = new_values
        return new_df
    
    def read_table(cur, sql_order):
        try:
            cur.execute(sql_order)  
            data = cur.fetchall()
            frame = pd.DataFrame(list(data))
        except:  # , e:
            frame = pd.DataFrame()
            # print e
            # continue
        return frame
    
    def splitRFIDLog(cur, sql_order):
        rfidLogtab=read_table(cur, sql_order)
        rfidLogtab.columns = ['skuid', 'rfid','deviceid','records']
        ### 设置列的最大长度
        pd.set_option('max_colwidth', 1000)
        newtab1=tidy_split(rfidLogtab.iloc[1:4,0:4], 'records', sep='<br >') ###仅取3行
        newtab1.columns=['skuid', 'rfid','deviceid','records']
        newtab1=newtab1[newtab1.records.str.contains("入库") == False]
        newtab1['records'] = newtab1.records.str.replace(' 已售 ', '')
        newtab1['records'] = newtab1.records.str.replace(' 入柜 ', '')
        newtab2=tidy_split(newtab1,'records', sep='[')
        newtab3 = tidy_split(newtab2.iloc[1::2, :], 'records', sep='-')
        newtab4 = tidy_split(newtab3, 'records', sep=']')
        newtab4 = pd.DataFrame(newtab4.records.str.replace('deviceid=', ''))
        newtab5=newtab4.records.str.slice(0,21)
        newtab5=pd.DataFrame(newtab5,columns=['records'])
        print(newtab5)
        df = pd.DataFrame(newtab5.records.values.reshape(-1, 3),
        columns=['prestatus', 'endstatus','deviceid'])
        df = df.reset_index(drop=True)
        print(df)
        timedf=newtab2[newtab2.iloc[0::1, :].records.str.contains("deviceid") == False]#.iloc[0::1, :]
        timedf = timedf.reset_index(drop=True)
        splitRFIDLogTab=pd.concat([timedf,df],axis=1, join='inner')
        #将拆分的RFID的数据分到CSV中
        splitRFIDLogTab.to_csv('E:\\a.csv', sep=',', header=True, index=False)
        conn.commit()
        conn.close()
    if __name__ == '__main__':
        cur = conn.cursor()
        sql_order = "SELECT skuid, rfid, deviceid, records FROM main_log limit 20;"
        splitRFIDLog(cur,sql_order)
    
    


    将生成的结果写入到csv中,见如下示例结果:

    skuid

    rfid

    deviceid

    records

    prestatus

    endstatus

    deviceid

    1

    5133C90F30DCC1EE00005133C90F30DCC1EE0000

    898602c9981730091839

    2017/11/2 10:52

    3

    4

    898602c9981730091839


    展开全文
  • Python-数据库

    万人学习 2017-08-24 09:30:54
    Python数据库编程视频教程,数据库是MySQL,讲解Python链接MySQL数据库,并对数据库进行增删改查操作。
  • Python操作数据库

    千人学习 2021-04-23 17:59:13
    数据库有很多种,初学者搞定MySQL就行了,因为现在互联网公司多数是用这个数据库,大厂也不例外。 【为什么学Python】   Python 是当今非常热门的语言之一,2020年的 TIOBE 编程语言排行榜Python名列第一...
  • 本例,我们用两种方法实现了数据库的连接,并将数据取了出来。这两种方式都比较简单清楚: 1. #!/usr/bin/python # -*- coding: utf-8 -*- import MySQLdb conn = MySQLdb.connect(host="192.16.0.12",...
  • 在利用python进行数据分析时,有时候我们会直接连接数据库,将需要分析数据导入到python中。如果直接导入到python中数据格式为tuple,不便于后续的分析。下面为大家介绍两种方法,能够将利用sql提取的数据转换为...
  • python数据分析数据库基本操作(SQLite) SQLite: 关系型数据库管理系统 嵌入式数据库,适用于嵌入式设备 SQLite不是C/S的数据库引擎 集成在用户程序 实现了大多数SQL标准 连接数据库: conn = sqlite3....
  • python数据库

    2019-12-24 15:14:39
    本节为python数据库,主要讲解python中数据库的相关知识。
  • '''向数据库中插入数据''' def insert_database ( sql , *args ) : conn, cursor = init_database() try: cursor.execute( sql , args ) conn.commit() cursor.close() conn.close() return True ...
  • 数据存放在MySQL里面,在数据库里面查询发现有个字段的数据是JSON格式,不方便进行后续的操作,比方说:统计分析,特征提取等。所以想把这个字段里面的JSON格式数据进行解析,解析成功后,然后把以结构化表的形式...
  • 在之前的文章【爬取天气信息】我们已经将昆明二月份的气温爬取到数据库了,那么现在我们需要对这些数据进行一些分析操作,下面是使用matplotlib对这些数据的一些操作 折线图 首先我们读取数据库中数据:日期、...
  • Python数据分析数据库多表连接(SQLite) 多表连接: 将多个表的记录连接并返回结果 join方式 交叉连接(cross join) 内连接(inner join) 外连接(outer join) cross join: 生成两张表的笛卡尔积 ...
  • 5、导出爬取的数据数据库并绘图分析 1)导出爬取的数据数据库 需求: 将爬取到的数据导入数据库 在添加爬取多页功能(第4节)的基础上进行后续开发 步骤: (1)修改 pipeline.py 文件(输出到数据库...
  • python数据分析之后处理的数据入什么数据库比较好 mysql?Oracle?python数据分析之后处理的数据入什么数据库比较好 mysql?Oracle?python数据分析之后处理的数据入什么数据库比较好 mysql?Oracle?python数据分析...
  • 基于Python建立于clickhouse列式数据库的连接(附踩坑记录)
  • 前言 上一篇写到了mysql与python的简单交互 还讲到了一些基础的面向对象设计 这两天探索了一下,发现如果是用pandas做...使用Python连接数据库 导入表所有数据并查看前五行 选你所想 一般来说,...
  • 本章是对推荐算法进行python实战,也是第一次用到较大的数据集,利用python数据库进行连接。 本文主要分为以下几个部分: 数据库连接 逐块统计 数据清洗 数据转换 网页分类 模型构建 总结 数据库连接 在...
  • python 操作influxdb数据库获取数据

    千次阅读 2020-01-20 17:32:05
    python 操作influxdb数据库获取数据前言原理环境准备上代码功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、...
  • Python写入数据库

    千次阅读 2020-02-20 20:28:27
    将获取的数据存储在数据库中,当文件数据量过大时, 存储文件会打开失败且占用较大的内存空间 问题分析: 创建个人信息比较简单 写入数据库步骤: 1.导入模块:import pymysql 2.建立连接:co...
  • 数据库数据的仓库,将大量数据按照一定的方式组织并存储起来,方便进行管理和维护,例如快速检索和统计等。数据库的主要特点: 以一定的方式组织、存储数据; 能为多个用户共享; 与程序彼此独立。 …… ...
  • 系列一:《python数据分析基础与实践》 章节1Python概况 课时2Python简介 章节2Python安装 课时3安装Anaconda 课时4使用Anaconda 章节3数据准备 课时5数据类型 – 布尔型 课时6数据类型 – 数值型 课时7数据类型 – ...
  • 我们在实际的Python开发过程,不可避免的需要与各种数据库进行交互,这些数据库包括关系型数据库与非关系型数据库,其中最具代表性的是Mysql、Mongodb和Redis,学习本套课程,大大提升你的开发效率
  • 2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642....不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 144,626
精华内容 57,850
关键字:

python分析数据库中数据

python 订阅