精华内容
下载资源
问答
  • pandas连接数据库

    2020-04-03 16:24:56
    python强大的处理数据的能力很大一部分来自Pandaspandas不仅限于读取本地的离线文件,也可以在线读取数据库的数据,处理后再写回数据库中。pandas主要是以sqlalchemy方式与数据库建立链接,支持Mysql、postgresql...

    python强大的处理数据的能力很大一部分来自Pandas,pandas不仅限于读取本地的离线文件,也可以在线读取数据库的数据,处理后再写回数据库中。pandas主要是以sqlalchemy方式与数据库建立链接,支持Mysql、postgresql、Oracle、MS SQLServer、SQLite等主流数据库。

    一:创建链接数据库引擎

    from sqlalchemy import create_engine

    engine= create_engine('postgresql://user@58.251.157.179:port/database',echo = True)

    echo = True ,会显示在加载数据库所执行的SQL语句。

    二:读取数据库数据,存储为DataFrame格式

    1:读取自定义数据(通过SQL语句)

    pandas.read_sql_query(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None,chunksize=None)

    例如:data = pd.read_sql_query('select * from t_line ',con = engine),会返回一个数据库t_line表的DataFrame格式。如有有时间列可以parse_dates = [time_column]用于解析时间,并把此列作为索引index_col = [time_column]

    read_sql_query()中可以接受SQL语句,包括增删改查。但是DELETE语句不会返回值(但是会在数据库中执行),UPDATE,SELECT,等会返回结果.

    例如:data = pd.read_sql_query('delete from test_cjk where f_intime = 1309',con = engine),这条语句会执行,删除 test_cjk表中f_intime=1309的值,但不会返回data。

    其他例子:

    '''插入操作'''  pd.read_sql_query("insert into cjk_test h values %(data)s",params={'data':v_split[11]},con = engine) 

    '''更新操作''' pd.read_sql_query("update cjk_test set a='粤11111'  WHERE a='粤B30738'",con = engine)  

    '''删除操作''' pd.read_sql_query("delete from cjk_test where c='1'",con=engine)                  

    删除插入更新操作没有返回值,程序会抛出SourceCodeCloseError,并终止程序。如果想继续运行,可以try捕捉此异常。

    2:读取整张表于DataFrame格式

    pandas.read_sql_table(table_name, con, schema=None, index_col=None, coerce_float=True, parse_dates=None, columns=None, chunksize=None)

    例如:data = pd.read_sql_table(table_name = 't_line',con = engine,parse_dates = 'time',index_col = 'time',columns = ['a','b','c'])

    3:读数据库

    pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)

    三:数据写入于数据库

    DataFrame.to_sql(name, con, flavor='sqlite', schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, dtype=None)

    例如:data.to_sql('test_cjk',engine,if_exists='replace',index = False),把数据写入test_cjk表中。

    if_exists='replace',如果数据库中有test_cjk表,则替换。

    if_exists='append',如果数据库中有test_cjk表,则在表后面添加。

    if_exists='fail',如果数据库中有test_cjk表,则在写入失败。

    chunksize,如果data的数据量太大,数据库无法响应可能会报错,这时候就可以设置chunksize,比如chunksize = 1000,data就会一次1000的循环写入数据库。

    展开全文
  • pandas 连接数据库

    2019-11-26 10:28:11
    读取MySql数据 ...import pandas as pd conn = MySQLdb.connect(host = host,port = port,user = username,passwd = password,db = db_name) data = pd.read_sql('select * from table_name',con=conn...

    读取MySql数据

     import MySQLdb
     import pandas as pd
     conn = MySQLdb.connect(host = host,port = port,user = username,passwd = password,db = db_name)
     data = pd.read_sql('select * from table_name',con=conn)
     conn.close() 
    
    

    读取SqlServer数据

     import pymssql
     conn = pymssql.connect(host=host, port=port ,user=username, password=password, database=database)
    
     sql= "select  * from  CUST_CSI_BND_INDX"#查询条件
     data = pd.read_sql(sql,con=conn)
     conn.close()

    e.g
    import pandas as pd
    import pymssql
    conn=pymssql.connect(host="172.18.3.7",user="gaokexin",password="gaokexin",database="DATAPOOL")
    sql= "select  * from  CUST_CSI_BND_INDX"
    data=pd.read_sql_query(sql,con=conn)
    conn.close() 

     

    https://blog.csdn.net/weixin_42213622/article/details/86523400   

    各种连接数据库详解

    展开全文
  • pandas连接数据库 import pymysql from sqlalchemy import create_engine sql = 'select * from data' conn = create_engine('mysql+pymysql://root:159951@127.0.0.1:3306/test') pdata = pd.read_sql(sql,conn) ...
  • 文章目录一、pandas连接数据库的两个包注意点:二、使用步骤1.先使用sqlalchemy进行文件的读取和写入操作步骤如下:2.使用 pymysql 读取 一、pandas连接数据库的两个包 #sqlalchemy和pymysql pandas 是基于...


    一、pandas中连接数据库的两个包

    #sqlalchemy和pymysql

    pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
    有时候,我们会使用到 pandas 来直接处理我们数据库的相关数据

    注意点:

    1.sqlalchemy支持pd的读取和写入操作,但是在使用的时候尽量使用1.2.19的版本(我使用其他版本报错了)
    使用此命令 pip installed sqlalchemy==1.2.19
    2.pymysql就只能支持我们从数据库进行读取,而不能进行写入数据库的而操作
    使用此命令进行安装的操作 pip install pymysql 即可

    二、使用步骤

    																我的数据库的结构
    

    1.先使用sqlalchemy进行文件的读取和写入操作

    步骤如下:

    代码如下(示例):

    import pandas as pd
    from sqlalchemy import create_engine
    
    
    # 使用sqlalchemy连接数据库
    
    #相关的代码参数是:数据库的用户名,密码,localhost,端口号,数据库的名称
    # mysql+pymysql://{}:{}@{}:{}/{}'.format(self.user,self.passwd,self.hostname,self.port,self.db)
    con = create_engine('mysql+pymysql://{}:{}@{}:{}/{}'.format('root', 1234, 'localhost', 3306, 'test'))
    
    # 查询语句,选出emp表中的所有数据
    sql = 'select * from employee '
    
    # read_sql_query的两个参数: sql语句, 数据库连接
    df = pd.read_sql(sql, con=con)
    # 输出employee表的查询结果
    print(df)
    
    
    #进行数据的写入
    #使用pd新建一个数据表
     cd = pd.DataFrame({'id': [1, 2, 3, 4], 'name': ['jalen', 'xr', 'lili', 'liuliu']})
    print(cd)
    
    
    # 将新建的DataFrame储存为MySQL中的数据表,储存index列,同时候替换原来的表
    #if_exists的三个取值分别以下:
    # fail的意思如果表存在,啥也不做
    # replace的意思,如果表存在,删了表,再建立一个新表,把数据插入
    # append的意思,如果表存在,把数据插入,如果表不存在创建一个表!!
    cd.to_sql('mydf', con, index=True, if_exists="replace")
    

    2.使用 pymysql 读取

    代码如下(示例):

    import pandas as pd
    from sqlalchemy import create_engine
    
    # 使用 pymysql 连接数据库
    connect = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='1234', 
    db='test', use_unicode=True,charset="utf8")
    
    # 查询语句,选出emp表中的所有数据
    sql = 'select * from employee '
    
    # read_sql_query的两个参数: sql语句, 数据库连接
    df = pd.read_sql(sql, con=connect)
    # 输出employee表的查询结果
    print(df)
    

    展开全文
  • 使用哪个包连接数据库 在使用pandas读取和写入数据库的时候,最好不要用pymssql直接去连服务器,读取数据可能不会出问题,但是在写入的时候,会出现一系列的问题。推荐使用sqlalchemy库 import pandas as pd import ...

    使用哪个包连接数据库

    在使用pandas读取和写入数据库的时候,最好不要用pymssql直接去连服务器,读取数据可能不会出问题,但是在写入的时候,会出现一系列的问题。推荐使用sqlalchemy

    import pandas as pd
    import pymssql
    import numpy as np
    import matplotlib.pyplot as plt
    from sqlalchemy import create_engine
    from sqlalchemy.orm import sessionmaker
    
    DB_CONNECT_STRING = 'mssql+pymssql://sa:1qaz2wsx!@10.103.66.45:1444/integration?charset=utf8'
    engine = create_engine(DB_CONNECT_STRING, echo=True)
    DB_Session = sessionmaker(bind=engine)
    session = DB_Session()
    
    querry='select * from APPQI_RawData_Overview'
    data=pd.read_sql(querry,con=engine)
    

    输出到数据库类型转换出错

    这是因为存在nul值可能导致无法转换成数据库支持的形式,可以采取的操作办法主要有两种:

    1. 想办法填充空缺值,避免出错
    2. 导出时全部设置dtype属性为字符型,从而避免类型转换
    from sqlalchemy.types import NVARCHAR, Float, Integer
    # final_set=pd.concat([A1_DOA_special,RR,operation_wrong_data,A1_DOA_duplicate])
    A_na.to_sql(name='test_table8',con=engine,chunksize=10,index=False,if_exists='append',dtype={'Date_diff':Integer})
    
    展开全文
  • 1、导包 ...2、连接数据库 方法1:用pymysql库连接数据库的写法 conn = pymysql.connect( host = '127.0.0.1', user = 'root', password = 'root', db = 'qinlu', port = 3306, charset = 'utf8' )
  • 连接数据库并读取数据的代码封装成一个方法 # 将连接数据库并读取数据的代码封装成一个方法 def reader(query, db, charset): sql = query engine = create_engine('mysql+pymysql://root:root@localhost:3306/{...
  • 然后创建一个字典,将数据库内的一些属性写入字典。 写一个带办的sql语句, 代码基本就是,创建连接 --> 创建游标 --> 执行代办的sql语句 --> 用游标查出所有的表的内容 --> 建立DataFrame --> 关闭...
  • 有些时候我们经常需要对数据库进行多次反复的数据查询,但是这样的会对我们程序效率大打折扣,我们完全可以先将数据库数据全部保存到pandas的dataframe中,然后在dataframe中进行数据的对比和查找。 2.代码案例 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,843
精华内容 4,337
关键字:

pandas连接数据库