Python 操作 MySQL数据库


Posted in Python onSeptember 18, 2020

开发环境与配置

  • win_x64
  • Ubuntu14.04
  • Python3.x

pip安装pymysql模块

直接使用pip安装 pip install pymysql
win64上直接在cmd中执行

连接本地数据库

使用模块pymysql连接数据库

本地数据库相关配置请参阅: http://rustfisher.github.io/2017/02/25/backend/MySQL_install/

#!/usr/bin/python
# coding=utf-8
import pymysql

# 连接本地数据库
conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='yourpwd', db='samp_db1', charset='utf8')
cursor = conn.cursor()
cursor.execute('select * from bigstu')
for row in cursor.fetchall():
  print(row)

# 查
cursor.execute('select id, name from bigstu where age > 22')
for res in cursor.fetchall():
  print(str(res[0]) + ", " + res[1])

cursor.close()
print('-- end --')

输出:

(1, '张三', '男', 24, datetime.date(2017, 3, 29), '13666665555')
(6, '小刚', '男', 23, datetime.date(2017, 3, 11), '778899888')
(8, '小霞', '女', 20, datetime.date(2017, 3, 13), '13712345678')
(12, '小智', '男', 21, datetime.date(2017, 3, 7), '13787654321')
1, 张三
6, 小刚
-- end --

可以直接执行sql语句。获得的结果是元组。

sql相似条件查询

SELECT * FROM anindex.subject_basic_table where season_id having '2018';

插入数据

插入一条数据,接上面的代码

insertSql = "insert into bigstu (name, sex, age, mobile) values ('%s','%s',%d,'%s') "
xiuji = ('秀吉', '男', 15, '13400001111')
cursor.execute(insertSql % xiuji)
conn.commit() # 别忘了提交

添加列

在mobile后面添加一列cash

addCo = "alter table bigstu add cash int after mobile"
cursor.execute(addCo)

如果要设置默认值

addCo = "alter table bigstu add cash int default 0 after mobile"
cursor.execute(addCo)

删除数据

删除 name=秀吉 的数据

deleteSql = "delete from bigstu where name = '%s'"
cursor.execute(deleteSql % '秀吉')

删除列

删除cash列

dropCo = "alter table bigstu drop cash"
cursor.execute(dropCo)

修改数据

更新符合条件的数据

updateSql = "update bigstu set sex = '%s' where name = '%s'"
updateXiuji = ('秀吉', '秀吉') # 秀吉的性别是秀吉
cursor.execute(updateSql % updateXiuji)
conn.commit()

事物处理

给某个记录的cash增加

table = "bigstu"
addCash = "update " + table + " set cash = cash + '%d' where name = '%s'"
lucky = (1000, "秀吉")

try:
  cursor.execute(addCash % lucky)
except Exception as e:
  conn.rollback()
  print("加钱失败了")
else:
  conn.commit()

直接执行SQL语句,十分方便

代码片段

给数据库添加列

从json中读取需要添加的列名,获取当前2个表中所有的列名
整理得出需要插入的列名,然后将列插入到相应的表中

import pymysql
import json
import os
import secureUtils

mapping_keys = json.load(open("key_mapping_db.json", "r"))
db_keys = [] # json中所有的key

for k in mapping_keys.values():
  db_keys.append(k)

conn = pymysql.connect(host='localhost', port=3306, user='root',
            passwd='*****', db='db_name', charset='utf8')

cursor = conn.cursor()
table_main = "table_main"
main_table_keys = [] # 主表的列名
cursor.execute("show columns from " + table_main)
for row in cursor.fetchall():
  main_table_keys.append(row[0])

staff_table_keys = []
cursor.execute("show columns from table_second")
for row in cursor.fetchall():
  staff_table_keys.append(row[0])

need_to_insert_keys = []
for k in db_keys:
  if k not in staff_table_keys and k not in main_table_keys and k not in need_to_insert_keys:
    need_to_insert_keys.append(k)

print("need to insert " + str(len(need_to_insert_keys)))
print(need_to_insert_keys)
for kn in need_to_insert_keys:
  print("add key to db " + kn)
  cursor.execute("alter table staff_table add " + kn +" text")

conn.close()

将字段字符改变

这里将main_table_keys中的所有字段改为utf8

# change column character set to utf8
for co in main_table_keys:
  change_sql = "alter table " + table_main + " modify " + co + " text character set utf8"
  print(change_sql)
  cursor.execute(change_sql)

以上就是Python 如何操作 MySQL的详细内容,更多关于Python 操作 MySQL的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
通过Python使用saltstack生成服务器资产清单
Mar 01 Python
举例讲解Python的lambda语句声明匿名函数的用法
Jul 01 Python
python re模块findall()函数实例解析
Jan 19 Python
Python lambda函数基本用法实例分析
Mar 16 Python
pandas获取groupby分组里最大值所在的行方法
Apr 20 Python
Python实现的tcp端口检测操作示例
Jul 24 Python
Python实现串口通信(pyserial)过程解析
Sep 25 Python
Python Scrapy框架第一个入门程序示例
Feb 05 Python
python实现微信打飞机游戏
Mar 24 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
Oct 15 Python
python中watchdog文件监控与检测上传功能
Oct 30 Python
python实现企业微信定时发送文本消息的实例代码
Nov 25 Python
python实现人工蜂群算法
Sep 18 #Python
Python猫眼电影最近上映的电影票房信息
Sep 18 #Python
python实现简单遗传算法
Sep 18 #Python
详解python 支持向量机(SVM)算法
Sep 18 #Python
python利用线程实现多任务
Sep 18 #Python
Pycharm的Available Packages为空的解决方法
Sep 18 #Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
Sep 18 #Python
You might like
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
js 获取Listbox选择的值的代码
2010/04/15 Javascript
jquery和雅虎的yql服务实现天气预报服务示例
2014/02/08 Javascript
用Jquery实现滚动新闻
2014/02/12 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
2015/09/01 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
原生js和css实现图片轮播效果
2017/02/07 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
layui从数据库中获取复选框的值并默认选中方法
2018/08/15 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
Vue中util的工具函数实例详解
2019/07/08 Javascript
详解微信小程序自定义组件的实现及数据交互
2019/07/22 Javascript
在Uni中使用Vue的EventBus总线机制操作
2020/07/31 Javascript
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
Python面向对象之反射/自省机制实例分析
2018/08/24 Python
基于Python的PIL库学习详解
2019/05/10 Python
python中时间模块的基本使用教程
2019/05/14 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
Python更换pip源方法过程解析
2020/05/19 Python
基于matplotlib中ion()和ioff()的使用详解
2020/06/16 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
2021/01/27 Python
HOTEL INFO英国:搜索全球酒店
2019/08/08 全球购物
优秀应届生推荐信
2013/11/09 职场文书
八年级历史教学反思
2014/01/10 职场文书
应届毕业生个人求职信范文
2014/01/29 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
英语求职信范文
2014/05/23 职场文书
高考诚信考试承诺书
2015/04/29 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
导游词之贵州百里杜鹃
2019/10/29 职场文书
一文搞懂redux在react中的初步用法
2021/06/09 Javascript
Java 轮询锁使用时遇到问题
2022/05/11 Java/Android