当前位置: 首页 > news >正文

网站生成自助企业备案网站可以做论坛吗

网站生成自助,企业备案网站可以做论坛吗,网站建设销售职责,有创意的设计产品文章目录 一、read_sql()二、to_sql()三、连接数据库方式—MySQL1、用sqlalchemy包构建数据库链接2、用DBAPI构建数据库链接 四、容易遇到的问题 一、read_sql() 功能 将 SQL 查询/数据库表读入 DataFrame。 语法 读取数据库(通过SQL语句或表名) pand…

文章目录

  • 一、read_sql()
  • 二、to_sql()
  • 三、连接数据库方式—MySQL
    • 1、用sqlalchemy包构建数据库链接
    • 2、用DBAPI构建数据库链接
  • 四、容易遇到的问题


一、read_sql()

  • 功能

将 SQL 查询/数据库表读入 DataFrame。

  • 语法

    • 读取数据库(通过SQL语句或表名)

pandas.read_sql(sql, con, index_col: ‘str | Sequence[str] | None’ = None, coerce_float: ‘bool’ = True, params=None, parse_dates=None, columns=None, chunksize: ‘int | None’ = None) -> ‘DataFrame | Iterator[DataFrame]’

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

pandas.read_sql_query(sql, con, index_col=None, coerce_float: ‘bool’ = True, params=None, parse_dates=None, chunksize: ‘int | None’ = None, dtype: ‘DtypeArg | None’ = None) -> ‘DataFrame | Iterator[DataFrame]’

    • 读取整张表于DataFrame格式(通过表名)

pandas.read_sql_table(table_name: ‘str’, con, schema: ‘str | None’ = None, index_col: ‘str | Sequence[str] | None’ = None, coerce_float: ‘bool’ = True, parse_dates=None, columns=None, chunksize: ‘int | None’ = None) -> ‘DataFrame | Iterator[DataFrame]’

read_sql是综合了read_sql_table和read_sql_query的,所以一般用read_sql就好了。

  • 基本参数
名称说明
sql要执行的数据库或SQL命令字符串。
con连接sql数据库的engine,一般可以用SQLalchemy或者pymysql之类的包建立。
index_col选择某1列或几列作为index(或MultiIndex),字符串或字符串列表。
coerce_float布尔值,将数字形式的字符串直接以float型读入,默认为True。
params执行查询时传递的参数。
parse_dates将某一列日期型字符串转换为datetime型数据,与pd.to_datetime函数功能类似。可以直接提供需要转换的列名以默认的日期形式转换,也可以用字典的格式提供列名和转换的日期格式:比如{column_name: format string}(format string:“%Y:%m:%H:%M:%S”)。
columns要选取的列。一般没啥用,因为在sql命令里面一般就指定要选择的列了。
chunksize如果提供了一个整数值,那么就会返回一个generator,每次输出的行数就是提供的值的大小。

二、to_sql()

  • 功能

将DataFrame写入SQL数据库表。

  • 语法

to_sql(name: ‘str’, con, schema=None, if_exists: ‘str’ = ‘fail’, index: ‘bool_t’ = True, index_label=None, chunksize=None, dtype: ‘DtypeArg | None’ = None, method=None) -> ‘int | None’ method of pandas.core.frame.DataFrame instance

  • 基本参数
名称说明
name数据库对应的表名
con与数据库链接的方式,推荐使用sqlalchemy的engine类型
schema相应数据库的引擎,不设置则使用数据库的默认引擎,如mysql中的innodb引擎
if_exists可选参数,字符串,默认是"fail"。当数据库中已经存在数据表时,对数据表的操作,有replace替换,即删除原来的表,重新创建一个新表;append追加,fail则当表存在时提示ValueError。
index可选参数,bool类型,默认是True。是否将DataFrame的索引写入数据库表中。
index_label可选参数,字符串类型,当上一个参数index为True时,设置写入数据表时index的列名称。
chunksize可选参数,int类型,默认是None。一次写入数据时的数据行数量,设置整数,如20000,当数据量很大时,需要设置,否则会链接超时写入失败。
dtype可选参数,字典类型,默认是None。将列名映射到SQL类型。

三、连接数据库方式—MySQL

1、用sqlalchemy包构建数据库链接

通过 sqlalchemy 的 create_engine 创建:有两种方式,基本格式一致,区别只是在于使用 mysqldb,还是使用 pymysql,推荐使用pymysql。

pymysql使用方式

import pandas as pd
from sqlalchemy import create_engine# 建立数据库连接
# "mysql+pymysql://{用户名}:{密码}@{域名}:{端口号}/{数据库名}"
engine = create_engine("mysql+pymysql://root:123456@localhost:3306/data")

mysqldb使用方式

mysqldb 是 python2 的 mysql 连接库,在 python3 时,已经废除 mysqldb,改为pymysql。在 sqlachemy 必须使用 mysqldb 驱动时,需要先导入pymysql ,然后执行 “pymysql.install_as_MySQLdb()” 才能使用。

import pandas as pd
import pymysql
from sqlalchemy import create_engine
pymysql.install_as_MySQLdb()
engine = create_engine("mysql+pymysql://root:123456@localhost:3306/data")

封装数据库信息,格式化传入:

db_info = {'user':'root','password':'123456','host':'localhost','database':'data','port':3306
}
engine = create_engine('mysql+pymysql://%(user)s:%(password)s@%(host)s:%(port)d/%(database)s?charset=utf8' % db_info)

示例1: 将 MySQL数据库表读入 DataFrame 。

# 定义SQL查询
sql_query = 'select * from sc'# 执行查询操作:把sql查询结果读取为dataframe
df = pd.read_sql(sql_query,engine)

示例2: 将 DataFrame 中的数据写入 MySQL 数据库表。

# 执行写入操作:将dataframe写入sql数据表
df.to_sql(name='',con=engine,if_exists='replace',index=False)

2、用DBAPI构建数据库链接

import pandas as pd
import pymysql# 建立数据库连接
conn = pymysql.connect(host='localhost',		# 主机名(或IP地址)port=3306,				# 端口号,默认为3306user='root',			# 用户名password='123456',	# 密码charset='utf8'  		# 设置字符编码
)
# 获取mysql服务信息(测试连接,会输出MySQL版本号)
print(conn.get_server_info())

示例1: 将 MySQL数据库表读入 DataFrame 。

# 选择数据库
conn.select_db("database")# 定义SQL查询
sql_query = 'select * from sc'# 执行查询操作:把sql查询结果读取为dataframe
df = pd.read_sql(sql_query,conn)

示例2: 将 DataFrame 中的数据写入 MySQL数据库表。

# 执行写入操作:将dataframe写入sql数据表
df.to_sql(name='',con=conn ,if_exists='replace',index=False)

会显示下面的报错情况:
TypeError: not all arguments converted during string formatting

pandas.errors.DatabaseError: Execution failed on sql ' SELECT name FROM sqlite_master WHERE type IN ('table', 'view') AND name=?; ': not all arguments converted during string formatting

在这里插入图片描述

原因: 引擎问题。在python3中,to_sql() 的con对象,是 sqlalchemy 的 engine 引擎。

解决方案: 使用to_sql()将dataframe写入sql数据表,要用sqlalchemy包构建数据库链接。参考文章:https://blog.csdn.net/xiaoyw71/article/details/131126161。

四、容易遇到的问题

问题一: python中sqlalchemy操作mysql密码包含@特殊字符。

import pandas as pd
from sqlalchemy import create_enginedb_info = {'user':'root','password':'123@456','host':'localhost','database':'data','port':3306
}
engine = create_engine('mysql+pymysql://%(user)s:%(password)s@%(host)s:%(port)d/%(database)s?charset=utf8' % db_info)# 定义SQL查询
sql_query = 'select * from sc'# 执行SQL查询操作
df=pd.read_sql_query(sql_query ,engine)

报错:sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on '2024jyz@172.30.21.57' ([Errno -2] Name or service not known)")

在这里插入图片描述

解决方案:

import pandas as pd
from sqlalchemy import create_engine
from urllib import parsedb_info = {'user':'root','password':parse.quote_plus('123@456'),'host':'localhost','database':'data','port':3306
}engine = create_engine('mysql+pymysql://%(user)s:%(password)s@%(host)s:%(port)d/%(database)s?charset=utf8' % db_info)

参考文章:
https://blog.csdn.net/initiallht/article/details/120406317
https://blog.csdn.net/qq_41982570/article/details/127059642


参考文章:
https://blog.csdn.net/LeiLiFengX/article/details/109922043
https://www.cnblogs.com/think90/articles/11899070.html

http://www.yayakq.cn/news/475006/

相关文章:

  • 网站建设费如何入帐磁力搜索引擎下载
  • 张家港企业网站唐山工程建设信息网站
  • 网站的线下推广怎么做网站正在建设中界面设计
  • 杭州网站建设h5上海营业执照查询系统
  • 淘客做自己的网站微信怎么自己创建公众号
  • 外贸网站建设网站昆山做网站多少钱
  • 网页设计站点规划做网站哪家公司专业
  • 网站建设推广文案烟台网站建设 烟台网亿网络
  • app 官方网站 案例怎么给自己的品牌做网站
  • 网站的关键词排名内网怎么做网站
  • 图书销售网站设计怎么做价格低的宣传语
  • 南宁商城网站推广公司做行业导航网站好
  • 电商平台门户网站建设的重要性单页面的网站
  • 重庆建网站推广价格百度指数可以用来干什么
  • 哈尔滨建站平台详细解读宁德建设银行网站
  • 农家乐网站免费模板wordpress手机验证码登录界面
  • 温州做外贸网站九江建网站公司有哪些
  • 网站模板颜色网站建设实训心得体会
  • ·温州公司建设网站网页特效模板
  • 网站如何快速被百度收录分销平台官网
  • 哈尔滨建设集团seo关键词排名优化系统
  • 河南省住建局官方网站wordpress不能评论
  • 怎样建设与维护自己的平台网站wordpress主题接入社交功能
  • 用微信小程序怎么做网站wordpress搬家后空白
  • 做一家网站需要多少钱wordpress使用qq登录
  • 服装网站页面设计人脉推广平台有哪些
  • 网站开发的知识重庆企业网站如何推广
  • 动态视频网站开发中国室内设计联盟网
  • 如何做com的网站seo建站淘客
  • 网站开发验收报告模板wordpress没人维护了