Pandas数据库查询更新create_engine用法,以及一些警告及弃用处理

警示情况:

UserWarning: pandas only supports SQLAlchemy connectable (engine/connection) or database string URI or sqlite3 DBAPI2 connection. Other DBAPI2 objects are not tested. Please consider using SQLAlchemy.

目前使用的连接方式:

conn = pymysql.connect(
         host='127.0.0.1',
        user='root',
        passwd='xxxx',
        db='house_term',
        port=3306,
        charset='utf8'
     )
data = pd.read_sql("select * from warehouse_housing", conn)

避免警告提示推荐使用SQLAlchemy

需要先安装SQLAlchemy库: pip install sqlalchemy

新连接使用方式:

from sqlalchemy import create_engine, text

    host = '127.0.0.1'
    user = 'root'
    passwd = 'x x x'
    db = 'house_term'
    port = 3306
    engine = create_engine('mysql+pymysql://%s:%s@%s:%s/%s?charset=utf8'
                           % (user, passwd, host, port, db))

    data = pd.read_sql(text("select * from warehouse_housing"), engine.connect())

sql语句需要使用text()包裹使用,如果没有包裹则会报错:

raise exc.ObjectNotExecutableError(statement) from err
sqlalchemy.exc.ObjectNotExecutableError: Not an executable object: 'select * from warehouse_housing'

engine需要使用connect()否则会出现如下报错:

原因:pd.read_sql方法传递“连接”变量而不是“引擎”

    return self.connectable.execution_options().execute(*args, **kwargs)
AttributeError: 'Engine' object has no attribute 'execution_options'

原因:pd.read_sql方法传递“连接”变量而不是“引擎”

详细讲解一下create_engine的使用方法:

engine = create_engine('dialect+driver://username:password@host:port/database')

dialect -- 数据库类型               driver -- 数据库驱动选择

username -- 数据库用户名        password -- 用户密码

host--服务器地址       port--端口        database--数据库

另外附上隐藏警告的使用方法:

import warnings
warnings.filterwarnings('ignore')
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hares_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值