本次代码实现连接远程服务器

由于MySQL服务器以独立的进程运行,并通过网络对外服务,所以,需要支持Python的MySQL驱动来连接到MySQL服务器。

目前,MySQL驱动有几种:

mysql-connector-python:是MySQL官方的纯Python驱动;

MySQL-python:是封装了MySQL C驱动的Python驱动。

安装MySQL驱动:

pip install mysql-connector-python

测试是否安装成功,测试python下是否可成功导入mysql.connector即可(import mysql.connector)

pip install MySQL-python (不支持python3)

测试是否安装成功,测试python下是否可成功导入MySQLdb即可(import MySQLdb)

pip install mysqlclient (mysqlclient 完全兼容MySQLdb,同时支持python3)

测试是否安装成功,测试python下是否可成功导入MySQLdb即可(import MySQLdb)

pip install PyMySQL

测试是否安装成功,测试python下是否可成功导入pymysql即可(import pymysql)

方式一:pandas中使用SQLAlchemy

SQLAlchemy是Python编程语言下的一款开源软件。提供了SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行SQLAlchemy模块提供了create_engine()函数用来初始化数据库连接,SQLAlchemy用一个字符串表示连接信息:'数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名'

我们需要以下三个库来实现Pandas读写MySQL数据库:

pandas

sqlalchemy

pymysql

image.png

import pandas as pd

import pymysql

from sqlalchemy import create_engine

# 初始化数据库连接,使用pymysql模块

# MySQL的用户:root, 密码:147369, 端口:3306,数据库:test

engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test'charset=utf8)

# 查询语句,查询employee表中的所有数据

sql = ''' select * from employee; '''

# read_sql_query的两个参数: sql语句, 数据库连接

df = pd.read_sql_query(sql, engine)

# 输出employee表的查询结果

df

# 新建pandas中的DataFrame, 只有id,num两列

df = pd.DataFrame({'id': [1, 2, 3, 4], 'name': ['zhangsan', 'lisi', 'wangwu', 'zhuliu']})

# 将新建的DataFrame储存为MySQL中的数据表,储存index列

df.to_sql('mydf', engine, index=True)

print('Read from and write to Mysql table successfully!')

示例的Python代码如下:

1 # -*- coding: utf-8 -*-

2

3 # 导入必要模块

4 import pandas as pd 5 from sqlalchemy import create_engine 6

7 # 初始化数据库连接,使用pymysql模块

8 db_info = {'user': 'root',

9 'password': '123456', 10 'host': 'localhost', 11 'port': 3306, 12 'database': 'test'

13 } 14

15 engine = create_engine('mysql+pymysql://%(user)s:%(password)s@%(host)s:%(port)d/%(database)s?charset=utf8' % db_info, encoding='utf-8') 16 # 直接使用下一种形式也可以

17 # engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')

18

19 # 读取本地CSV文件

20 df = pd.read_csv("C:/Users/fuqia/Desktop/example.csv", sep=',') 21 print(df) 22 # 将新建的DataFrame储存为MySQL中的数据表,不储存index列(index=False)

23 # if_exists:

24 # 1.fail:如果表存在,啥也不做

25 # 2.replace:如果表存在,删了表,再建立一个新表,把数据插入

26 # 3.append:如果表存在,把数据插入,如果表不存在创建一个表!!

27 pd.io.sql.to_sql(df, 'example', con=engine, index=False, if_exists='replace') 28 # df.to_sql('example', con=engine, if_exists='replace')这种形式也可以

29 print("Write to MySQL successfully!")

方式二:使用pymysql

image.png

# 方式二:

import pymysql

pip install PyMySQL

# 为了兼容mysqldb,只需要加入

pymysql.install_as_MySQLdb()

# 打开数据库连接

conn = pymysql.connect(host='*.*.*.*',

port=3306,

user='*',

passwd='*',

charset = 'utf8'

)

# 使用 cursor() 方法创建一个游标对象 cursor

cursor = conn.cursor()

# 使用 execute() 方法执行 SQL 查询

cursor.execute("show databases;")

cursor.execute("use database_name;")

cursor.execute("show tables;")

cursor.execute("select * from tables_name")

# 使用 fetchone() 方法获取单条数据;使用 fetchall() 方法获取所有数据

data = cursor.fetchall()

for item in data:

print(item[0])

# 关闭数据库连接

cursor.close()

或者

import pymysql

param = {

'host':'localhost',

'port':3306,

'db':'tp',

'user':'root',

'password':'dao0206',

'charset':'utf8',

}

conn = pymysql.connect(**param) #连接对象

cur = conn.cursor() #游标对象,采用默认的数据格式

cur.execute("SELECT * FROM test") #执行sql语句,返回受影响的行数

cur.fetchall() #获取查询结果

# %s:占位符

# params:增加内容的列表或元组,多条语句可以使用嵌套

sql = "insert into test values(%s,%s)"

params = (1221,"小强")

cur.execute(sql, params) #sql语句参数化,防止攻击!

# pymysql连接数据库默认开启事物,提交之前的操作,使生效!

conn.commit()

# 要及时关闭连接!

cur.close() #关闭游标

conn.close() #关闭连接

注意:

虽然可以使用cur.execute执行create table等语句

但建议在开发之初,就创建好数据库表结构,然后再将数据追加到表中

方式三:使用MySQLdb

# 方式三:

import MySQLdb

# 打开数据库连接

conn = MySQLdb.connect(host='*.*.*.*',

port=3306,

user='*',

passwd='*',

charset = 'utf8'

)

# 使用 cursor() 方法创建一个游标对象 cursor

cursor = conn.cursor()

# 使用 execute() 方法执行 SQL 查询

cursor.execute("show databases;")

cursor.execute("use database_name;")

cursor.execute("show tables;")

cursor.execute("select * from tables_name")

# 使用 fetchone() 方法获取单条数据;使用 fetchall() 方法获取所有数据

data = cursor.fetchall()

for item in data:

print(item)

# 关闭数据库连接

cursor.close()

方式四:使用mysql.connector

# 方式四:

import mysql.connector

# 打开数据库连接

db = mysql.connector.connect(host='*.*.*.*',

port=3306,

user='*', # 数据库IP、用户名和密码

passwd='*',

charset = 'utf8')

# 使用 cursor() 方法创建一个游标对象 cursor

cursor = db.cursor()

# 使用 execute() 方法执行 SQL 查询

cursor.execute("show databases;")

cursor.execute("use database_name;")

cursor.execute("show tables;")

# 使用 fetchone() 方法获取单条数据;使用 fetchall() 方法获取所有数据

data = cursor.fetchall()

for item in data:

print(item[0])

# 关闭数据库连接

db.close()

image.png

python连接mysql的几种方式_Python连接MySQL数据库的多种方式相关推荐

  1. python连接sql引用的第三方库_python连接sqlserver数据库操作

    简述 python连接微软的sql server数据库用的第三方模块叫做pymssql(document:http://www.pymssql.org/en/stable/index.html).在官 ...

  2. MySQL的7种JOIN表连接结果集,你了解几个?搞懂仅需1张图

    目录 实践 第一种 第二种 第三种 第四种 第五种 第六种 第七种 大家好呀!我是爷爷的茶七里香,周末啦~开森~,今天突然想起曾经面试遇到的MySQL题目,记录下来方便查阅!!!  MySQL的7种表 ...

  3. python不支持以下哪种数据类型_Python 不支持以下哪种数据类型?

    Python 不支持以下哪种数据类型? 答:char 中国大学MOOC: 为了充分利用学习时间,下列方法可行的是: 答:尽量选择理想的固定场所学习\n充分利用等候和其它碎片时间\n把握一天中的最佳状态 ...

  4. python的for语句有几种写法_Python if 和 for 的多种写法

    原博文 2016-12-09 16:37 − a, b, c = 1, 2, 3 [对比Cpp里:c = a >b? a:b]这个写法,Python只能常规的空行,缩进吗? 人生苦短,我用pyt ...

  5. 计算机打开网络连接,win7电脑三种打开网络连接上网的方法

    使用电脑上网,免不了常常发生电脑连不上网络的故障.出现这种情况,就需要到电脑的"网络连接"查看网络的参数状况,下面就由学习啦小编跟大家分享win7电脑三种打开网络连接上网的方法吧, ...

  6. python操作数据库的几种方法_python对mysql数据库操作的三种不同方式

    原标题:python对mysql数据库操作的三种不同方式 |转载自:博客园 |原文链接:http://www.cnblogs.com/mryrs/p/6951008.html 先要说一下,在这个暑期如 ...

  7. python传入参数的几种方法_python传递参数方式小结

    本文实例总结了python传递参数方式.分享给大家供大家参考.具体分析如下: 当形参如*arg时表示传入数组,当形参如**args时表示传入字典. 输出: python中定义一个函数,可以通过正常的只 ...

  8. python处理json数据 乱码报错_python操作mysql中文显示乱码的解决方法

    本文实例展示了一个脚本python用来转化表配置数据xml并生成相应的解析代码. 但是在中文编码上出现了乱码,现将解决方法分享出来供大家参考. 具体方法如下: 1. Python文件设置编码 utf- ...

  9. python函数定义和其四种参数_python入门第九课:函数的定义及多种参数传递方式...

    本教程使用的课本是<Python编程:从入门到实践>,作者:[美] Eric Matthes 本节介绍Python中的函数,函数是可以反复使用的一段代码,有了函数能大大简化编程工作量,还能 ...

最新文章

  1. 零基础入门CV赛事,理论结合实践
  2. string substring的用法_夯实Java基础系列3:一文搞懂String常见面试题,从基础到实战...
  3. wdcp系统升级mysql5.7.11
  4. python可以实现什么黑科技_Python黑科技之元类
  5. 虚拟路由器冗余协议-VRRP
  6. 【LeetCode】【HOT】102. 二叉树的层序遍历(队列)
  7. Q93:PLY文件对应图形法向量反向问题——以bunny10K为例
  8. LVDT位移传感器的构成原理及特点
  9. 《三国演义》分章节梗概
  10. iphone11返回上一级手势怎么设置_iPhone11怎么返回手势操作
  11. 微信运动服务器忙,很哥解密:微信运动有玄机,有人悄悄惦记你
  12. 《这个历史挺靠谱·上·袁腾飞讲中国史》读后感
  13. Vue 点击获得父元素,子元素,兄弟元素(DOM操作)
  14. 内置函数sum与sum(list,[])
  15. php面试题之PHP核心技术(life)
  16. FairyGUI-GComponent组件
  17. 淘宝 Android 端图片体验优化实践
  18. 单元话题写作-Unit 1 英语学习
  19. 续集关于上次简单微信小程序制作 (快递100查询)
  20. Java多线程同步和通信

热门文章

  1. 【SSA三维路径规划】基于matlab麻雀算法无人机三维航迹规划【含Matlab源码 301期】
  2. 人工智能是什么?人工智能行业前景如何
  3. python里 tan的倒数怎么表示_Python sympy.tan方法代码示例
  4. 多个label,可变长情况下使用Masonry
  5. 医疗知识图谱问答系统探究(一)
  6. (java)求最大公约数
  7. 定制你的语音识别-并行语音识别解码空间
  8. 修改element单选框样式
  9. 华清远见嵌入式毕业总结
  10. commvault备份mysql数据库_Oracle数据库的备份和恢复-Commvault.PDF