Python MySQL 数据库连接不同方式
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 数据库连接不同方式的更多相关文章
- python Mysql数据库连接池组件封装(转载)
以前一直在用Java来开发,数据库连接池等都是有组件封装好的,直接使用即可,最近在尝试Python的学习,碰到了和数据库打交道的问题,和数据库打交道我们都知道,数据库连接池必不可少,不然要么就是程序异 ...
- Python - MySQL 数据库连接 - PyMySQL 驱动 - 第二十五天
序言 本文我们为大家介绍 Python3 使用 PyMySQL 连接数据库,并实现简单的增删改查. 什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务 ...
- Python MySQL数据库连接模块
1. MySQLdb只支持在Python 2版本使用MySQLdb是用于Python链接Mysql数据库的接口.a.pip安装 直接使用pip进行安装,在此之前需要安装一些系统依赖包. ● CentO ...
- Python实现Mysql数据库连接池
python连接Mysql数据库: python编程中可以使用MySQLdb进行数据库的连接及诸如查询/插入/更新等操作,但是每次连接mysql数据库请求时,都是独立的去请求访问,相当浪费资源,而且访 ...
- python+ mysql存储二进制流的方式
很多时候我们为了管理方便会把依稀很小的图片存入数据库,有人可能会想这样会不会对数据库造成很大的压力,其实大家可以不用担心,因为我说过了,是存储一些很小的图片,几K的,没有问题的! 再者,在这里我们是想 ...
- Spring练习,使用Properties类型注入方式,注入MySQL数据库连接的基本信息,然后使用JDBC方式连接数据库,模拟执行业务代码后释放资源,最后在控制台输出打印结果。
相关 知识 >>> 相关 练习 >>> 实现要求: 使用Properties类型注入方式,注入MySQL数据库连接的基本信息,然后使用JDBC方式连接数据库,模拟执 ...
- python3 实现mysql数据库连接池
首先声明一下,这篇博客进行了通过自己的代码方式,加上这篇博客,最后总结出这段代码.参考博客连接:http://blog.csdn.net/zbc1090549839/article/details/5 ...
- Python - 3MySQL 数据库连接
Python3 MySQL 数据库连接 本文我们为大家介绍 Python3 使用 PyMySQL 连接数据库,并实现简单的增删改查. 什么是 PyMySQL? PyMySQL 是在 Python3.x ...
- Python3 MySQL 数据库连接 -PyMySQL
Python 3 操作mysql http://www.runoob.com/python3/python3-mysql.html Python3 MySQL 数据库连接 本文我们为大家介绍 Pyt ...
随机推荐
- 【编程开发】CMake相关注意事项
[编程开发]CMake相关注意事项 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ CMake是一个非常常用的跨平台移植的工具,CMake可用来生成不同平台下 ...
- MemCache服务安装配置及windows下修改端口号
简述:memcached 开源的分布式缓存数据系统.高性能的NOSQL Linux 一.环境配置与安装 01.编译准备环境 yum install -y gcc make cmake autoconf ...
- poj1915(双向bfs)
题目链接:https://vjudge.net/problem/POJ-1915 题意:求棋盘上起点到终点最少的步数. 思路:双向广搜模板题,但玄学的是我的代码G++会wa,C++过了,没找到原因QA ...
- [转帖]Kafka 原理和实战
Kafka 原理和实战 https://segmentfault.com/a/1190000020120043 两个小时读完... 实在是看不完... 1.2k 次阅读 · 读完需要 101 分钟 ...
- 剑指offer26:将二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
1 题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 2 思路和方法 在二叉搜索树中,每个结点都有两个分别指向其左.右子树的 ...
- 最大流Dinic(模板)
#define IOS ios_base::sync_with_stdio(0); cin.tie(0); #include <cstdio>//sprintf islower isupp ...
- 测试工作小工具~总结&下载连接
1.Gif录制小工具(动图提单 ≖ᴗ≖) 地址:https://licecap.en.softonic.com/download
- Idea加载项目扫描完毕后自动退出
问题描述:Idea平时好好的,突然就打开后扫描完毕后自动退出.网上说修改idea.exe.vmoptions文件的Xmx,还是不行. 后来根据http://www.pianshen.com/artic ...
- HTTP的请求方法
. OPTIONS - 获取服务器支持的HTTP请求方法: 用来检查服务器的性能.如:AJAX进行跨域请求时的预检,需要向另外一个域名的资源发送一个HTTP O ...
- Centos7--从最小化系统发开发环境
Centos7--从最小化系统发开发环境 程序员总是离不开"环境"的困扰,从进入新手村的那一天就开始手动搞各种环境.虽然阿里云学生服务很方便,但是想弄集群真的买不起.正好实验室有 ...