PyMySQL 驱动连接

什么是 PyMySQL?
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。

PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。

PyMySQL 安装
在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。

PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL。

如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL:

$ pip3 install PyMySQL
如果你的系统不支持 pip 命令,可以使用以下方式安装:

1、使用 git 命令下载安装包安装(你也可以手动下载):

$ git clone https://github.com/PyMySQL/PyMySQL
$ cd PyMySQL/
$ python3 setup.py install
2、如果需要制定版本号,可以使用 curl 命令来安装:

$ # X.X 为 PyMySQL 的版本号
$ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz
$ cd PyMySQL*
$ python3 setup.py install
$ # 现在你可以删除 PyMySQL* 目录
注意:请确保您有root权限来安装上述模块。

实例:
以下实例链接 Mysql 的 TESTDB 数据库:

实例(Python 3.0+)
#!/usr/bin/python3

import pymysql

# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )

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

# 使用 execute() 方法执行 SQL 查询
cursor.execute("SELECT VERSION()")

# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()

print ("Database version : %s " % data)

# 关闭数据库连接
db.close()

mysql-connector 驱动

mysql-connector 是 MySQL 官方提供的驱动器。

我们可以使用 pip 命令来安装 mysql-connector:

python -m pip install mysql-connector
使用以下代码测试 mysql-connector 是否安装成功:

demo_mysql_test.py:
import mysql.connector
执行以上代码,如果没有产生错误,表明安装成功。

创建数据库连接
可以使用以下代码来连接数据库:

demo_mysql_test.py:
import mysql.connector

mydb = mysql.connector.connect(
host="localhost", # 数据库主机地址
user="yourusername", # 数据库用户名
passwd="yourpassword" # 数据库密码
)

print(mydb)

MySQLdb库来连接

MySQLdb先支持Python2.,不支持Python3.。

MySQLdb的安装
MySQLdb的安装可以使用pip进行安装:

pip install MySQL-python==1.2.5

Python对MySQL进行操作
Python与MySQL进行连接-connection
创建连接的对象,建立Python客户端与数据库网络连接
创建的基本方法MySQLdb.connect(相关的参数),其中的主要参数有(host, user, passwd, port, db, charset),在这些参数中,只有port是数字类型,其他的参数都是字符串类型。
对数据库进行执行,获取执行的结构-cursor
游标对象:用于执行查询和获取结果
cursor对象包含的方法如下:
参数名 说明
execute(command) 执行一个数据库查询和命令
fetchone() 获取结果集中的下一行
fetchmany() 获取结果集中的下几行
fetchall() 获取结果集中的全部信息
rowcount 最近的一次execute返回数据或影响的行数
close() 关闭游标对象
举一个例子

import MySQLdb
conn = MySQLdb.Connect(
host = "127.0.0.1",
port = 3306,
user = "lee",
passwd = "123",
db = "lee",
charset = "utf8",
)

cursor = conn.cursor()

sql_command = 'select * from user'

cursor.execute(sql_command)

rs = cursor.fetchall()

for ele in rs:
print 'userid : %d , username : %s' %ele

cursor.close()
conn.close()

让python 3支持mysqldb的解决方法

原因
MySQLdb 只适用于python2.x,发现pip装不上。它在py3的替代品是: import pymysql

pip install pymysql
django+mysql
而Django默认的还是使用MySQLdb:执行会报:ImportError: No module named 'MySQLdb'

解决:
在站点的 __init__.py 文件中添加

import pymysql
pymysql.install_as_MySQLdb()

在使用torndb的过程中发现其底层是对MySQLdb的封装,而MySQLdb不支持python3.x
解决:安装mysqlclient包,其完全兼容MySQLdb
pip install mysqlclient

解决了MySQLdb问题后,使用torndb的query功能是报了新的错误,如下:

AttributeError: module 'itertools' has no attribute 'izip'

源代码:

#! /usr/bin env python3
# -*- coding:utf-8 -*-

import torndb

config = {
"host": "127.0.0.1:3306",
"user": "root",
"password": "bukeshuo",
"database": "db_test"
}
def query_all():
con = torndb.Connection(**config)
results = con.query('select account from users')
con.close()
return results

print(query_all())

解决方案:更改con.query()中的源代码。(按住ctrl点击con.query 目的是找到这个模块的源代码)
按照下面的提示进行更改,并保存。

def query(self, query, *parameters, **kwparameters):
"""Returns a row list for the given query and parameters."""
cursor = self._cursor()
try:
self._execute(cursor, query, parameters, kwparameters)
column_names = [d[0] for d in cursor.description]
"""
错误说itertools找不到izip模块。
因为我们使用的mysqlclient替代MySQLdb,
所以使用zip_longest模块替代izip模块。
"""
# 使用这一句替代下面一行代码
# return [Row(itertools.zip_longest(column_names, row)) for row in cursor]
return [Row(itertools.izip(column_names, row)) for row in cursor]
finally:
cursor.close()

Python MySQL 数据库连接不同方式的更多相关文章

  1. python Mysql数据库连接池组件封装(转载)

    以前一直在用Java来开发,数据库连接池等都是有组件封装好的,直接使用即可,最近在尝试Python的学习,碰到了和数据库打交道的问题,和数据库打交道我们都知道,数据库连接池必不可少,不然要么就是程序异 ...

  2. Python - MySQL 数据库连接 - PyMySQL 驱动 - 第二十五天

    序言 本文我们为大家介绍 Python3 使用 PyMySQL 连接数据库,并实现简单的增删改查. 什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务 ...

  3. Python MySQL数据库连接模块

    1. MySQLdb只支持在Python 2版本使用MySQLdb是用于Python链接Mysql数据库的接口.a.pip安装 直接使用pip进行安装,在此之前需要安装一些系统依赖包. ● CentO ...

  4. Python实现Mysql数据库连接池

    python连接Mysql数据库: python编程中可以使用MySQLdb进行数据库的连接及诸如查询/插入/更新等操作,但是每次连接mysql数据库请求时,都是独立的去请求访问,相当浪费资源,而且访 ...

  5. python+ mysql存储二进制流的方式

    很多时候我们为了管理方便会把依稀很小的图片存入数据库,有人可能会想这样会不会对数据库造成很大的压力,其实大家可以不用担心,因为我说过了,是存储一些很小的图片,几K的,没有问题的! 再者,在这里我们是想 ...

  6. Spring练习,使用Properties类型注入方式,注入MySQL数据库连接的基本信息,然后使用JDBC方式连接数据库,模拟执行业务代码后释放资源,最后在控制台输出打印结果。

    相关 知识 >>> 相关 练习 >>> 实现要求: 使用Properties类型注入方式,注入MySQL数据库连接的基本信息,然后使用JDBC方式连接数据库,模拟执 ...

  7. python3 实现mysql数据库连接池

    首先声明一下,这篇博客进行了通过自己的代码方式,加上这篇博客,最后总结出这段代码.参考博客连接:http://blog.csdn.net/zbc1090549839/article/details/5 ...

  8. Python - 3MySQL 数据库连接

    Python3 MySQL 数据库连接 本文我们为大家介绍 Python3 使用 PyMySQL 连接数据库,并实现简单的增删改查. 什么是 PyMySQL? PyMySQL 是在 Python3.x ...

  9. Python3 MySQL 数据库连接 -PyMySQL

    Python 3  操作mysql http://www.runoob.com/python3/python3-mysql.html Python3 MySQL 数据库连接 本文我们为大家介绍 Pyt ...

随机推荐

  1. Introduction - Welcome

    摘要: 本文是吴恩达 (Andrew Ng)老师<机器学习>课程,第一章<绪论:初识机器学习>中第1课时<欢迎参加机器学习课程>的视频原文字幕.为本人在视频学习过程 ...

  2. Redis安装与配置问题

    Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...

  3. 深入理解java:5. Java分布式架构

    什么是分布式架构 分布式系统(distributed system)是建立在网络之上的软件系统. 内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统. 透明性是指每一个数据库分布节点对用户 ...

  4. VMware Windows Server 2008 R2 X64 虚拟机安装教程

    首先进入VMware Workstation中,点击创建新的虚拟机 然后按如下步骤操作 然后进去选择拷贝的Windows 2008的映像文件 下面这个网址里面提供了各种映像文件的下载http://is ...

  5. 磁盘分区知识与linux系统分区实践

    一.磁盘存储逻辑结构图 回忆: (1)什么是分区? 磁盘分区就相当于给磁盘打隔断. (2)磁盘在linux里的命名 IDE    /dev/hda  hdb SCSI   sda     sdb 分区 ...

  6. HanLP-命名实体识别总结

    人名识别 在HanLP中,基于角色标注识别了中国人名.首先系统利用隐马尔可夫模型标注每个词语的角色,之后利用最大模式匹配法对角色序列进行匹配,匹配上模式的即为人名.理论指导文章为:<基于角色标注 ...

  7. go 计算 MD5

    Golang的加密库都放在crypto目录下,其中MD5库在crypto/md5包中,该包主要提供了New和Sum函数 直接调用md5计算 package main import ( "cr ...

  8. SQL SERVER 字符串函数 STRING_SPLIT()

    定义: STRING_SPLIT()函数根据指定的分隔符将字符串拆分为子字符串行. ※STRING_SPLIT 要求兼容性级别至少为 130. (即SSMS 2016及以上版本) ※级别低于 130 ...

  9. 【第一季】CH05_FPGA设计Verilog基础(二)Enter a post title

    [第一季]CH05_FPGA设计Verilog基础(二) 5.1状态机设计 状态机是许多数字系统的核心部件,是一类重要的时序逻辑电路.通常包括三个部分:一是下一个状态的逻辑电路,二是存储状态机当前状态 ...

  10. MySQL 聚合函数(二)Group By的修饰符——ROLLUP

    原文为MySQL 5.7 官方手册:12.20.2 GROUP BY Modifiers 一.ROLLUP 修饰符的意义 GROUP BY子句允许添加WITH ROLLUP修饰符,该修饰符可以对分组后 ...