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中使用poplib模块收取邮件的教程
Apr 29 Python
python中实现k-means聚类算法详解
Nov 11 Python
pandas 选择某几列的方法
Jul 03 Python
pandas 按照特定顺序输出的实现代码
Jul 10 Python
python 自动去除空行的实例
Jul 24 Python
pycharm 配置远程解释器的方法
Oct 28 Python
pandas dataframe添加表格框线输出的方法
Feb 08 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
May 18 Python
Python内置加密模块用法解析
Nov 25 Python
详解Python Opencv和PIL读取图像文件的差别
Dec 27 Python
Python解析多帧dicom数据详解
Jan 13 Python
详解python模块pychartdir安装及导入问题
Oct 22 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
用PHP连接MySQL代码的参数说明
2008/06/07 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
php使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
JQuery小知识
2010/10/15 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
2014/09/06 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
2017/02/23 Javascript
Angular开发者指南之入门介绍
2017/03/05 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
解决vue-router中的query动态传参问题
2018/03/20 Javascript
vue实现点击当前标签高亮效果【推荐】
2018/06/22 Javascript
微信小程序实现签到功能
2018/10/31 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
js实现验证码功能
2020/07/24 Javascript
Python实现动态加载模块、类、函数的方法分析
2017/07/18 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
python中多个装饰器的调用顺序详解
2019/07/16 Python
opencv3/C++实现视频背景去除建模(BSM)
2019/12/11 Python
Python列表切片常用操作实例解析
2020/03/10 Python
python3读取autocad图形文件.py实例
2020/06/05 Python
美国最大的骑马用品零售商:HorseLoverZ
2017/01/12 全球购物
门卫岗位职责
2013/11/15 职场文书
电子商务个人职业生涯规划范文
2014/02/12 职场文书
四风问题党员个人整改措施
2014/10/27 职场文书
关于颐和园的导游词
2015/01/30 职场文书
2015年药店店长工作总结
2015/04/29 职场文书
党小组鉴定意见
2015/06/02 职场文书
2019年描写人生经典诗句大全
2019/07/08 职场文书
Redis6.0搭建集群Redis-cluster的方法
2021/05/08 Redis
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python
动视暴雪取消疫苗禁令 让所有员工返回线下工作
2022/04/03 其他游戏