Mac下用用Python操作Mysql数据库新手向指南

1、安装驱动

Python中最连接Mysql常用的驱动是

mysql-python :mysql的C语言的驱动
mysql-connector:msql官方的驱动
pymysql:python语言的驱动

本来想着用pip安装mysqldb,各种坑爹问题,就放弃了,用pymysql吧朋友,很友好。

pymysql安装

1、打开终端
2、终端运行
python3 pip install pymysql3
关于为什么是Python3为什么不是Python,这个大家不知道的可以自行百度。

如果提示:Operation not permitted的话就在python3前面加上sudo表示管理员权限运行这条指令。

2、操作数据库

数据库创建

CREATE TABLE `test_table` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `desc` varchar(20) DEFAULT NULL,
  `sex` varchar(2) DEFAULT NULL,
  PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;

execute的使用

  • execute只接受一个sql字符串做参数
  • execute如果是增删改操作
    • 返回受影响行数
  • execute是查操作
    • 返回查到的数据总数
#!/usr/bin/python
# -*- coding: UTF-8 -*-

import pymysql

# 打开数据库连接
# 1:本地连接地址 2:数据库账号 3:数据库密码 4、使用哪个数据库 5:数据写入数据库前转换成哪种编码
db = pymysql.connect("localhost", "root", "123456", "comment", charset='utf8')

# 使用cursor()方法获取操作游标
cursor = db.cursor()
# item_list = [[f'名字{x+1}', f'描述{x+1}'] for x in range(100)]
# print(item_list)

# SQL 插入语句
# 注意name和desc都是msyql关键字,所以要用``括起来,不然会报错的,大家可以删掉验证下。
insert_sql = "INSERT INTO test_table(`name`,`desc`) values ('区区名字', '区区描述')"
# 修改操作
# update_sql = "update test_table set `name`='不是区区名字' where `name` = '区区名字'"
# 获取操作
# select_sql = "select * from test_table where `name` = '不是区区名字'"

try:
    # 提交插入操作
    cursor.execute(insert_sql)
    # 提交修改操作
    #cursor.execute(update_sql)
    # 提交获取操作
    #cursor.execute(select_sql)
  	# 提交到数据库执行
    db.commit()
    #对于获取操作,fetchall()可以获得本次获取到的值
    #data = cursor.fetchall() # data是一个可迭代对象,可以用遍历的方式获取到里面的值
    #data = cursor.fetchall()
    #print(type(data)) # 获取到的是元组,元组的元素也是一个一个的子元组,每个子元组里的元素对应着一行记录中的各个字段大家可以取消注释执行验证试试看
    #for x in data:
        #print(x)
    
except Exception as e:
    print(e)
    # Rollback in case there is any error
    db.rollback()

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

executemany的使用

executemany可用来完成批量插入,看下面事例吧,一看便懂。

# coding:utf-8
import pymysql

# 打开数据库连接
db = pymysql.connect(host='localhost', port=3306,
                     user='username', passwd='password', db='database_name', charset='utf8')

# 使用cursor()方法获取操作游标
cursor = db.cursor()

# SQL 插入语句
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, AGE, SEX) VALUES (%s,%s,%s)"
# 一个tuple或者list
T = (('xiaoming', 31, 'boy'), ('hong', 22, 'girl'), ('wang', 90, 'man'))

try:
    # 执行sql语句
    cursor.executemany(sql, T)
    # 提交到数据库执行
    db.commit()
except :
    # 如果发生错误则回滚
    db.rollback()
# 关闭游标
cursor.close()
# 关闭数据库连接
db.close()

你可能感兴趣的:(Python)