博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

04python——连接mysql并对其进行操作

Posted on 2020-04-02 22:57  隐灰子  阅读(217)  评论(0编辑  收藏  举报

 PYthon连接数据库并进行操作方法汇总

1.本地开发环境如下

a.操作系统 Mac os

b.数据库 MySQL 8.0

c.Python 3.8.2

d.pip 20.0.3

2.连接数据库的方法

a. PyMySQL

b.mysql.connector

3.python连接数据的常规步骤

a.连接数据库

b.生成游标对象

c.执行SQL语句

d.关闭游标

f.关闭连接

4.PyMySQL 简单介绍

a.它是封装了MySQL驱动的Python驱动,可以Python连接到MySQL的库。

b.环境要求:Python version >= 3.4

c.PyMySQL安装:正常的第三方包导入即可。

d.安装成功后,查看包的版本,可以在终端里输入 pip  show PyMySQL

  当然,如果用pycharm里导入包,可以直接查看到包的版本。

5.利用PyMySQL连接数据库

import pymysql as pl

conn=pl.connect(host='172.18.111.199', port=3306, user='qqdz_reader',
                passwd='W3AWD5Tkf8kNB',
                db='fgw_qqzx_prod', charset='utf8') /*fgw_qqzx_prod是数据库名*/
cur = conn.cursor()

sql= "select * from qqdz_company_user limit 10"
cur.execute(sql)
data = cur.fetchall()
# 取前20行数据
for i in data[:20]:
print(i)
cur.close()  /*关闭游标*/
conn.close() /*关闭连接*/

6.mysql.connector介绍

a. mysql官方的纯python驱动

b.安装/查看版本,同其他的第三方包一样

7.利用mysql.connector连接数据库

import mysql.connector
#/*fgw_qqzx_prod是数据库名*/ 
conn=mysql.connector.connect(host='172.18.111.199', port=3306, user='qqdz_reader', passwd='W3AWD5Tkf8kNB', db='fgw_qqzx_prod', charset='utf8') #/*fgw_qqzx_prod是数据库名*/ 
cur = conn.cursor()
sql
= "select * from qqdz_company_user limit 100"
cur.execute(sql)
data
= cur.fetchall()

# 取前20行数据

for i in data[:20]:
print(i)

8.python对mysql数据库实现增删改查

增加数据

import pymysql as pl

conn=pl.connect(host='172.18.111.199', port=3306, user='qqdz_reader',
                passwd='W3AWD5Tkf8kNB',
                db='fgw_qqzx_prod', charset='utf8')
#/*fgw_qqzx_prod是数据库名*/
cur = conn.cursor()

sql = "insert into qqdz_company_user values ('1','21','33')"
try:
    cur.execute(sql)
    # 提交到数据库
    conn.commit()
except:  
    # 如果发生错误,则回滚
    conn.rollback()

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

查询数据

import pymysql as pl

conn=pl.connect(host='172.18.111.199', port=3306, user='qqdz_reader',
                passwd='W3AWD5Tkf8kNB',
                db='fgw_qqzx_prod', charset='utf8') /*fgw_qqzx_prod是数据库名*/
cur = conn.cursor()

sql= "select * from qqdz_company_user limit 10"
cur.execute(sql)
data = cur.fetchall()
# 取前20行数据
for i in data[:20]:
    print(i)
cur.close()  /*关闭游标*/
conn.close() /*关闭连接*/

删除数据

import pymysql as pl

conn=pl.connect(host='172.18.111.199', port=3306, user='qqdz_reader',
                passwd='W3AWD5Tkf8kNB',
                db='fgw_qqzx_prod', charset='utf8')
#/*fgw_qqzx_prod是数据库名*/
cur = conn.cursor()

sql = "delete from qqdz_company_user where number = 10"
try:
    cur.execute(sql)
    # 提交到数据库
    conn.commit()
except:  
    # 如果发生错误,则回滚
    conn.rollback()

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

修改数据

import pymysql as pl

conn=pl.connect(host='172.18.111.199', port=3306, user='qqdz_reader',
                passwd='W3AWD5Tkf8kNB',
                db='fgw_qqzx_prod', charset='utf8')
#/*fgw_qqzx_prod是数据库名*/
cur = conn.cursor()

sql = "update qqdz_company_user set name = "小明" where number = 10"
try:
    cur.execute(sql)
    # 提交到数据库
    conn.commit()
except:  
    # 如果发生错误,则回滚
    conn.rollback()

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

9.案例演示

import pymysql
config = {'host':'172.18.111.199','port':3306, 'user':'qqdz_reader','passwd':'W3AWD5Tkf8kNB',
           'charset':'utf8'}
conn = pymysql.connect(**config)
cursor = conn.cursor()
try:
    # 创建数据库
    DB_NAME = 'test_3'
    cursor.execute('DROP DATABASE IF EXISTS %s' % DB_NAME)
    cursor.execute('CREATE DATABASE IF NOT EXISTS %s' % DB_NAME)
    conn.select_db(DB_NAME)
    #创建表
    TABLE_NAME = 'bankData'
    cursor.execute('CREATE TABLE %s(id int primary key,money int(30))' %TABLE_NAME)
    # 批量插入纪录
    values = []
    for i in range(20):
        values.append((int(i),int(156*i)))
        cursor.executemany('INSERT INTO bankData values(%s,%s)',values)
    conn.commit()
    # 查询数据条目
    count = cursor.execute('SELECT * FROM %s' %TABLE_NAME)
    print ('total records:{}'.format(cursor.rowcount))
    # 获取表名信息
    desc = cursor.description
    print ("%s %3s" % (desc[0][0], desc[1][0]))
    cursor.scroll(10,mode='absolute')
    results = cursor.fetchall()
    for result in results:
        print (result)
except:
    import traceback
    traceback.print_exc()
    # 发生错误时会滚
    conn.rollback()
finally:
    # 关闭游标连接
    cursor.close()
    # 关闭数据库连接
    conn.close()