pycharm与mysql连接错误系统_pycharm怎么使用anaconda环境

pycharm与mysql连接错误系统_pycharm怎么使用anaconda环境pycharm与数据库MySQL连接

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

pycharm 与 MySQL交互连接

说明:本博文内容 由https://github.com/datawhalechina/wonderful-sql参考资料 整合而成。

安装 pymsql 模块:

pip install pymysql

使用Python的PyMySQL模块连接MySQL,执行SQL查询并取回查询结果:

mport pymysql.cursors
connection=pymysql.connect(host="127.0.0.1",port=3306,user='root',password='xxxxxx',database='sakila',charset="utf8mb4")
# 连接MySQL,密码为自己设置的密码,'sakila'内置的数据库
try :
    cursor=connection.cursor() # 创建游标对象
    sql="select * from actor where actor_id <10;"
    cursor.execute(sql) # 执行sql语句
    result=cursor.fetchall() #取回查询结果
    # 注意:取回的结果是一个嵌套的元组, 且没有数据表中的列名
    print(result)
except Exception:print("查询失败!")
cursor.close() #关闭游标对象
connection.close()

上述方式取回的结果是一个嵌套的元组, 并且没有数据表中的列名,不方便后续处理。

如果想要同时取回列名, 并且想让取回的数据具有更好的结构化, 可以使用 pandas 库的 read_sql 函数来读取检索结果:

import pymysql
# 封装为函数
def conn2mysql(sql):
    # 函数的参数为一个字符串类型的 SQL 语句,返回值为一个 DataFrame 对象
    from pandas import read_sql
    # 连接本机上的MySQL服务器中的'sakila'数据库
    connection=pymysql.connect(host="127.0.0.1",port=3306,user='root',password='xxxxxx',database='sakila',charset="utf8mb4")
    # 使用 pandas 的 read_sql 函数执行 SQL 语句并取回检索结果
    df=read_sql(sql,connection)
    # 关闭数据库连接
    connection.close()
    return df
# 使用上述封装的函数执行SQL
# 定义要执行的 SQL 查询
sql="select * from actor where actor_id <10;"
# 执行 sql 查询并取回查询结果
df = conn2mysql(sql)
# 查看取回的结果
print(df)

# actor_id first_name last_name last_update
# 0 1 PENELOPE GUINESS 2006-02-15 04:34:33
# 1 2 NICK WAHLBERG 2006-02-15 04:34:33
# 2 3 ED CHASE 2006-02-15 04:34:33
# 3 4 JENNIFER DAVIS 2006-02-15 04:34:33
# 4 5 JOHNNY LOLLOBRIGIDA 2006-02-15 04:34:33
# 5 6 BETTE NICHOLSON 2006-02-15 04:34:33
# 6 7 GRACE MOSTEL 2006-02-15 04:34:33
# 7 8 MATTHEW JOHANSSON 2006-02-15 04:34:33
# 8 9 JOE SWANK 2006-02-15 04:34:33

注意:使用pandas的read_sql函数时, 只需要建立Python到MySQL的连接即可, 不需要建立游标。
read_sql()参数介绍:

sql # 必备参数, SQL命令字符串
con  # 连接sql数据库的engine,我们这里使用pymysql的connect函数建立
index_col=None # 选择某一列作为pandas对象的index
coerce_float=True # 将数字形式的字符串直接以float型读入
parse_dates=None # 将数据表中datetime类型的列读取为datetime型数据,与pd.to_datetime 功能类似. 可直接提供需要转换的列名然后以默认的日期形式转换, 也可以用字典的格式提供列名和转换的日期格式,比如{列名A: 时间日期格式1, 列名B: 时间日期格式2}, 其中的时间日期格式需要是合法的格式, 例如:"%Y:%m:%H:%M:%S".
columns # 要读取的列,基本不会用到, 因为我们在sql命令里面就可以指定需要取回的列.
chunksize  # 对于取回大批量数据时有用. 如果提供了一个整数值,那么就会返回一个generator,每次输出的行数就等于你指定的该参数的值.

pymysql.connect()参数介绍:

host=None,# 要连接的主机地址, 本机上的 MySQL 使用 127.0.0.1
user=None,# 用于登录的数据库用户名, 例如 root.
password='',# 上述账号的相应密码
database=None,# 要连接的数据库,本教程使用的是来源于<SQL 基础教程>的 shop 数据库
port=0,# 端口,一般为 3306
unix_socket=None,# 选择是否要用 unix_socket 而不是 TCP/IP
charset='',# 字符编码, 需要支持中文请使用"utf8"
sql_mode=None,# Default SQL_MODE to use.
read_default_file=None,# 从默认配置文件(my.ini 或 my.cnf)中读取参数
conv=None,# 转换字典
use_unicode=None,# 是否使用 unicode 编码
client_flag=0,# Custom flags to send to MySQL. Find potential values in constants.CLIENT.
cursorclass=,# 选择 Cursor 类型
init_command=None,# 连接建立时运行的初始语句
connect_timeout=10,# 连接超时时间,(default: 10, min: 1, max: 31536000)
ssl=None,# A dict of arguments similar to mysql_ssl_set()'s parameters.For now the capath and cipher arguments are not supported.
read_default_group=None,# Group to read from in the configuration file.
compress=None,# 不支持
named_pipe=None,# 不支持
no_delay=None,
autocommit=False,# 是否自动提交事务
db=None,# 同 database,为了兼容 MySQLdb
passwd=None,# 同 password,为了兼容 MySQLdb
local_infile=False,# 是否允许载入本地文件
max_allowed_packet=16777216,# 限制 `LOCAL DATA INFILE` 大小
defer_connect=False,# Don't explicitly connect on contruction - wait for connect call.
auth_plugin_map={ 
   },
read_timeout=None,
write_timeout=None,
bind_address=None# 当客户有多个网络接口,指定一个连接到主机
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/174983.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • QDialog show

    QDialog类exec()与show()的区别

    2022年4月9日
    52
  • java解析XML为对象「建议收藏」

    java解析XML为对象「建议收藏」详解Java解析XML的四种方法http://developer.51cto.com 2009-03-3113:12 cnlw1985 javaeye 我要评论()XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML。本文将详细介绍用Java解析XML的四种方法。
     
    XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。对于XML本身的语法知识与技术细节,需要阅读相关的技术文献

    2022年5月4日
    39
  • 3阶有向完全图的所有非同构的子图(不同钩子图个数)

    子图同构问题本质上就是一种匹配,VF2算法加了很多feasibilityrules,保证了算法的高效性。这里只是实现最基本的判断子图同构的算法:参考文献有(其实google一把就能出来这些):http://stackoverflow.com/questions/8176298/vf2-algorithm-steps-with-examplehttp://www.zhihu

    2022年4月10日
    437
  • 如何使用eclipse软件创建一个Java项目?[通俗易懂]

    如何使用eclipse软件创建一个Java项目?[通俗易懂]同学们在参加Java的时候老师肯定会教给你们如何去创建一个项目,这里怕有些同学没记住,所以单独为大家分享一篇如何使用eclipse软件创建一个Java项目教程,感觉有用的话收藏转发一下~eclipse创建Java项目教程1.首先我们需要打开eclipse软件,之后找到左上角的file选项卡,点击一下依次选择new-Javaproject选项,如图所示。2.随后会打开一个新建页面,在里面我们找到箭头所示的projectname处,在里面填写我们的Java项目名称,直接选择finish即可完成创建。

    2022年7月9日
    22
  • shell高级技巧:提取vcf文件中一个contig

    shell高级技巧:提取vcf文件中一个contig这是一个很小众的需求 大部分变异检测都是基于组装质量比较高的基因组 而不是那种初步拼接的 contig 由于初步拼接的参考序列通常会有成千上万个 contig 序列 也就导致在 VCF 的头文件的 contig ID xxx length xxx 部分会有成千上万个 contig 将这个文件加载到 IGV 时 IGV 会去解析 VCF 这将会是非常缓慢的过程 最好的策略就是只提取其 ID xxx length xxx

    2025年6月2日
    4
  • 查看Vue版本 node.js版本vue-cli版本

    查看Vue版本 node.js版本vue-cli版本查看node.js版本node-v查看vue版本npmlistvue或者进入项目中package.json文件直接查看查看Vue-cli版本vue-V或者vue–version

    2022年5月10日
    227

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号