前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python连接mysql数据库

python连接mysql数据库

作者头像
wo.
发布2021-06-15 11:00:00
12.8K0
发布2021-06-15 11:00:00
举报
文章被收录于专栏:了不得的专栏

1、MySQL-python (MySQLdb) MySQL-python 又叫 MySQLdb,是 Python 连接 MySQL 最流行的一个驱动,很多框架都也是基于此库进行开发,遗憾的是它只支持 Python2.x,而且安装的时候有很多前置条件,因为它是基于C开发的库,在 Windows 平台安装非常不友好,经常出现失败的情况,现在基本不推荐使用,取代的是它的衍生版本。

2、PyMySQL PyMySQL 是纯 Python 实现的驱动,效率上比不上 MySQLdb,最大的特点可能就是它的安装方式没那么繁琐,同时也兼容 MySQL-python

3、mysqlclient 由于 MySQL-python 年久失修,后来出现了它的 Fork 版本 mysqlclient,完全兼容 MySQLdb,同时支持 Python3.x,是 Django ORM的依赖工具,如果你想使用原生 SQL 来操作数据库,那么推荐此驱动。

综上,选择 mysqlclient 来连接

安装mysqlclient

Windows下安装

在win7-64bit的环境下会有错误:unable to find vcvarsall.bat 直接使用pip install 安装失败

1、需要先下载wheel安装包 地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient 根据对应的python版本下载安装包

在whl文件目录下安装wheel包

代码语言:javascript
复制
#cmd
Pip instal xxxxxxx.whl 

2、安装mysqlclient

代码语言:javascript
复制
#cmd
pip install mysqlclient

Linux下安装

1、在CentOS系统下使用pip安装mysqlclient库:

代码语言:javascript
复制
# Python 3
pip3 install mysqlclient

2、如果有报错就需要安装依赖:

代码语言:javascript
复制
yum install python-devel mysql-devel

在python中简单的使用

1、连接数据库

代码语言:javascript
复制
db = MySQLdb.connect('127.0.0.1','root','root','database')

#或者
db = MySQLdb.connect(host='127.0.0.1',port='3307',user='root',passwd='root',db='database')

#一般来说,在代码中放置密码并不是一个好主意。可以从 ~/.my.cnf (UNIX-like systems) 获取用户名和密码以及其他参数
db = MySQLdb.connect(host='127.0.0.1',db = 'database', read_default_file='~/.my.cnf')

2、要执行查询,首先需要一个游标,然后您可以对其执行查询

代码语言:javascript
复制
# 使用cursor()方法获取操作游标
cursor = db.cursor()

3、查询

代码语言:javascript
复制
# SQL语句
cid = 1000
sql_sel = 'select * from test_table WHERE id = %s'

# 执行sql语句 .execute()
cursor.execute(sql_sel,(cid,))

# 返回值 .fetchone() 返回单元组类型
cursor.fetchone()
(值1, 值2, 值3...)

4、如果您想要更多行,可以使用 .fetchmany(n).fetchall().fetchmany(n)n是可选的,默认为 c.arraysize ,通常为1. 这两个方法都返回一系列行,如果没有更多行,则返回一个空序列。 如果使用奇怪的游标类,则行本身可能不是元组。

请注意,与上面相反, 当没有更多行要提取时 c.fetchone() 返回 None

5、很可能使用的唯一其他方法是必须执行多行插入时

代码语言:javascript
复制
c.executemany(
'''INSERT INTO breakfast (name, spam, eggs, sausage, price)
      VALUES (%s, %s, %s, %s, %s)''',
      [
      ("Spam and Sausage Lover's Plate", 5, 1, 8, 7.95 ),
      ("Not So Much Spam Plate", 3, 2, 0, 3.95 ),
      ("Don't Wany ANY SPAM! Plate", 0, 4, 3, 5.95 )
      ] )

完整示例:

代码语言:javascript
复制
# coding=utf-8
import MySQLdb

# 打开数据库连接
db = MySQLdb.connect(host='127.0.0.1',user='root',passwd='root',db='test_db')
# 使用cursor()方法获取操作游标
cursor = db.cursor()

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


# SQL语句
cid = '1000'
sql_ins = 'INSERT INTO test_table VALUES (%s,%s)'
sql_del = 'DELETE FROM test_table WHERE id = %s '
sql_upd = 'UPDATE test_table SET dd = %s WHERE dd > %s'
sql_sel = 'select * from test_table WHERE id = %s'

try:
    # 执行sql语句,增
    cursor.execute(sql_ins,(cid,cid))

    # 执行sql语句,删
    cursor.execute(sql_del,(cid,))

    # 执行sql语句,改
    cursor.execute(sql_upd,(cid,cid))

    # 执行sql语句,查
    cursor.execute(sql_sel,(cid,))
    data = cursor.fetchall()

    # 提交到数据库执行
    db.commit()
except:
    # 发生错误时回滚
    db.rollback()

# 关闭数据库连接
db.close()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装mysqlclient
    • Windows下安装
      • Linux下安装
      • 在python中简单的使用
        • 完整示例:
        相关产品与服务
        云数据库 SQL Server
        腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档