sqlalchemy 连接使用 MySQL

连接数据库

from sqlalchemy import create_engine

# 连接
connwin = create_engine('mysql+pymysql://root:123456@localhost:3306/db?charset=utf8')

插入数据库

result 为 DataFrame 类型的数据,可通过 to_sql 方法直接插入数据库,不用写 insert 语句,前提是数据库中已经建立好了表,在插入种可能会遇见编码问题,主键重复chauffeur等,具体问题具体修改。

具体参数

pandas 写入mysql数据库.to_sql方法详解_LeiliFengX的博客-CSDN博客_pandas to_sql

def to_sql(self, name, con, schema=None, if_exists='fail', index=True,
           index_label=None, chunksize=None, dtype=None, method=None):
from sqlalchemy import create_engine
import pandas as pd

# 连接
connwin = create_engine('mysql+pymysql://root:123456@localhost:3306/db?charset=utf8')

# 插入数据库
result.to_sql(table, con=conn, if_exists='append',index=False,chunksize=1000)
            

name:指定的是将输入接入数据库当做的哪个表

con:与数据库链接的方式,推荐使用sqlalchemy的engine类型

schema: 相应数据库的引擎,不设置则使用数据库的默认引擎,如mysql中的innodb引擎

if_exists: 当数据库中已经存在数据表时对数据表的操作,有replace替换、append追加,fail则当表存在时提示ValueError

index:对DataFrame的index索引的处理,为True时索引也将作为数据写入数据表

index_label:当上一个参数index为True时,设置写入数据表时index的列名称

chunsize:设置整数,如20000,一次写入数据时的数据行数量,当数据量很大时,需要设置,否则会链接超时写入失败。

dtype:写入数据表时,可以设置列的名称(The keys should be the column
names and the values should be the SQLAlchemy types or strings for
the sqlite3 legacy mode
),需要设置时,类型需要和sqlalchemy的类型保持一致.当不设置时,to_sql生成表时会自动兼容最大的类型。

.to_sql()参数中除 name、con必填外,可选参数index推荐使用False,同时dtype推荐不使用。

to_sql方法当数据表不存在时创建,存在时根据if_exists参数设置的replace,append,fail时分别对应替换、追加、失败处理。

数据库中对表的增删改,最好是在数据库层面处理,不应该由to_sql()方法设置,虽然这个方法本身可以在表不存在时增加表,但是不推荐。在数据库层面设计表,需要根据表的数据,不同的字段设计合理的存储类型,可以对表进行合理的设计和优化。to_sql()本身创建的表,浮点类型是double,整型bigint,字符类型默认兼容最大的text,虽然可以使用dtype参数设置类型,但我个人不推荐使用。还是建议在数据库中先创建合理的目标表,在根据to_sql()方法,将数据写入目标表中。

更新数据

from sqlalchemy import create_engine
import pandas as pd

# 连接
connwin = create_engine('mysql+pymysql://root:123456@localhost:3306/db?charset=utf8')

# 更新数据
sqlupdate = """update table set name = '%s' where  id = %s""" % ()
connods.execute(sqlupdate)

根据 id 更新 table 表中 name 字段,其中 id 为数值,name 为字符串,如果是字符串类型字段,在代码中注意写法是 '%s'  ,如果漏了引号,那不执行 

查询数据

查询出的数据格式为 DataFrame

from sqlalchemy import create_engine
import pandas as pd

# 连接
conn = create_engine('mysql+pymysql://root:123456@localhost:3306/db?charset=utf8')


sql1 = """select * from table"""
df= pd.read_sql(sql1,con)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值