重庆企业网站制作哪家好,自媒体app推广是做什么的,zencart网站模板下载,qq是哪个公司开发的文章目录使用Pandas连接数据库编码环境依赖包read_sql_query()的使用read_sql_table()的使用read_sql() 函数的使用to_sql()写入数据库的操作删除操作更新操作总结#xff1a;使用Pandas连接数据库
通过pandas实现数据库的读#xff0c;写操作时#xff0c;首先需要进行数据…
文章目录使用Pandas连接数据库编码环境依赖包read_sql_query()的使用read_sql_table()的使用read_sql() 函数的使用to_sql()写入数据库的操作删除操作更新操作总结使用Pandas连接数据库
通过pandas实现数据库的读写操作时首先需要进行数据库的连接然后通过调用pandas所提供的数据库读写函数与方法来实现数据库的读写操作。
Pandas提供了3个函数用于数据库的读操作
read_sql_query() 可以实现对数据库的查询操作但是不能直接读取数据库中的某个表需要在sql语句中指定查询命令与数据表的名称read_sql_table() 只能读取数据库某一个表的内的数据并且该函数需要sqlalchemy 模块的支持才能使用read_sql()函数既可以读取数据库中某一个表的数据也可以进行执行具体的查询操作。
Pandas提供了1个函数用于数据库的写操作
to_sql()该函数用户实现数据的写入操作通过DataFrame对象直接调用和将DataFrame对象保存为其他类型的文件类似。
编码环境
Jupyter Notebook
依赖包 pymysqlsqlalchemy 该模块 是在使用read_sql_table() 函数时必须要用的模块 安装包
pip install pymysql
pip install sqlalchemyread_sql_query()的使用
参数
pd.read_sql_query(sql, # 需要执行查询的sql语句con, # 数据库的连接index_colNone, 字符串或字符串列表可选默认值无coerce_float: bool True, 尝试将非字符串非数字对象如decimal.Decimal的值转换为浮点值paramsNone,parse_datesNone,chunksize: int | None None,dtype: DtypeArg | None None,
)pd.read_sql_query() 函数返回的数据类型时DataFrame
案例与使用
import pandas as pd
import pymysql # 导入操作mysql的数据包
import sqlalchemy # 使用pymysql进行连接数据库
db pymysql.connect(host127.0.0.1,userroot,passwd123456,port3306,charsetutf8,databasecomment_v1)
# user 用户名
# password 密码
# host 端口号
# database 数据库名
# charset 编码格式# 编写sql语句
sql select * from user_comment
# 通过read_sql_query函数进行查询
sql_query_data pd.read_sql_query(sqlsql,condb)
sql_query_dataread_sql_table()的使用
使用read_sql_table() 函数我们需要使用sqlalchemy 模块进行连接数据库通过这个模块我们才可以对某一个表进行查询。
在使用其他的驱动程序的时候会报NotImplementedError错误。
NotImplementedError: read_sql_table only supported for SQLAlchemy connectable.参数
pd.read_sql_table(table_name: str, # 数据库名称con, # 数据库连接schema: str | None None,index_col: str | Sequence[str] | None None,coerce_float: bool True,parse_datesNone,columnsNone,chunksize: int | None None,
)read_sql_table() 函数返回DataFrame类型 案例与使用
# 使用sqlalchemy连接数据库依次设置
sql_query_db sqlalchemy.create_engine(mysqlpymysql://root:123456127.0.0.1:3306/comment_v1)
# mysqlpymysql://root:123456127.0.0.1:3306/comment_v1
# mysql 连接的数据库类型
# pymysql 连接数据库的驱动
# root 用户名
# 123456 密码
# 127.0.0.1 数据库地址
# 3306端口号
# comment_v1连接的数据库名称# 通过read_sql_table
table pd.read_sql_table(table_nameuser_comment,consql_query_db)
tableread_sql() 函数的使用
read_sql()使用pymysql或者sqlalchemy对象都可以
参数
pd.read_sql(sql, # sql语句con, # 连接对象index_col: str | Sequence[str] | None None,coerce_float: bool True,paramsNone, parse_datesNone,columnsNone,chunksize: int | None None,
)案例与使用
# 通过read_sql函数读取数据库的信息
# 使用pymysql进行连接数据库
db pymysql.connect(host127.0.0.1,userroot,passwd123456,port3306,charsetutf8,databasecomment_v1)
sql select * from user_comment
read_sql pd.read_sql(sqlsql,condb)
read_sql# 通过read_sql函数读取数据库的信息
# 使用pymysql进行连接数据库
sql_query_db sqlalchemy.create_engine(mysqlpymysql://root:123456127.0.0.1:3306/comment_v1)
sql select * from user_comment
read_sql pd.read_sql(sqlsql,consql_query_db )
read_sqlto_sql()写入数据库的操作
to_sql方法同样需要使用SQLAlchemy模块的支持 参数
df.to_sql(name: str, # 表名称con, # 数据库连接schemaNone, if_exists: str fail, # fail如果表已经存在就不执行写入replace 如果表存在就删除原来的表再进行写入append代表在原有数据表中添加数据index: bool_t True, # 是否将行索引写入数据库中index_labelNone,chunksizeNone,dtype: DtypeArg | None None,methodNone,
)案例与使用
# 使用sqlalchemy模块进行连接
sql_query_db sqlalchemy.create_engine(mysqlpymysql://root:123456127.0.0.1:3306/atguigudb)
data {A:[1,2,3,4],B:[6,7,8,9],C:[4,3,2,1]
}
df pd.DataFrame(data)
df.to_sql(to_sql_dome,consql_query_db,if_existsappend)
# 测试查询
sql select * from to_sql_dome
read_df pd.read_sql(sqlsql,consql_query_db)
read_df结果 如和删除和更新数据库中的数据pandas官方并没有提供相应的函数但是我们同样可以使用read_sql和read_sql_query来进行实现对数据的删除和修改sql语句会执行但是程序会报错还可以通过原生python利用哦个pymysql中的execute()方法来执行对数据的删除和修改。 在实际生产过程中并不建议这样操作因为在实际过程中数据对公司是非常重要的作为一个数据分析师我们并不会拿到删除和更新操作的权限数据分析也不会修改原数据在进行分析和建模的所拿到的数据都是复制数据库的数据。
删除操作
删除to_sql_dome 表中A 1的一行数据
sql DELETE FROM to_sql_dome WHERE A 1;
read_df pd.read_sql(sqlsql,consql_query_db)执行上面的代码以后会报错 使用pymsql和sqlalchemy两种的报错不一样
sqlalchemyResourceClosedError: This result object does not return rows. It has been closed automatically.
pymsqlTypeError: NoneType object is not iterable更新操作
sql update to_sql_dome set B2 where A 4
read_df pd.read_sql(sqlsql,condb)执行后同样也会报错使用pymsql和sqlalchemy两种的报错不一样
sqlalchemyResourceClosedError: This result object does not return rows. It has been closed automatically.
pymsqlTypeError: NoneType object is not iterable
rceClosedError: This result object does not return rows. It has been closed automatically.最后在强调一下pandas并不推荐使用read_sql和read_sql_query来进行实现对数据的删除和更新如果想对数据进行操作可以使用原生的python利用pymysql进行操作。 总结
通过上面的四个方法我们发现Pandas操作数据库还是很方便的
read_sql()和read_sql_query()都是通过执行sql来进行查询的操作在查询数据时更重要的是对sql语句的掌握。read_sql_table() 是通过指定表名进行查询整个表的数据to_sql()写入数据库可以根据if_exists三个参数的不同来控制保存的数据表是删除重新保存还是追加或者是不进行操作。