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模拟登陆Tom邮箱示例分享
Jan 13 Python
Python中使用urllib2防止302跳转的代码例子
Jul 07 Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
Jul 07 Python
Python之csv文件从MySQL数据库导入导出的方法
Jun 21 Python
python 字符串和整数的转换方法
Jun 25 Python
Windows下python3.6.4安装教程
Jul 31 Python
解决python测试opencv时imread导致的错误问题
Jan 26 Python
python3+selenium自动化测试框架详解
Mar 17 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 Python
Django中提示消息messages的设置方式
Nov 15 Python
python用700行代码实现http客户端
Jan 14 Python
python实现学生信息管理系统源码
Feb 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读取汉字的点阵数据
2015/06/22 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
2017/02/06 PHP
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
JavaScript初学者应注意的七个细节详细介绍
2012/12/27 Javascript
Javascript实现滑块滑动改变值的实现代码
2013/04/12 Javascript
iframe子页面获取父页面元素的方法
2013/11/05 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
JS实现在状态栏显示打字效果完整实例
2015/11/02 Javascript
AngularJS 自定义过滤器详解及实例代码
2016/09/14 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
微信小程序页面开发注意事项整理
2017/05/18 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
利用Javascript获取选择文本所在的句子详解
2017/12/03 Javascript
javascript实现QQ空间相册展示源码
2017/12/12 Javascript
vue根据条件不同显示不同按钮的操作
2020/08/04 Javascript
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
python编程使用协程并发的优缺点
2018/09/20 Python
介绍一款python类型检查工具pyright(推荐)
2019/07/03 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
Hotels.com泰国:酒店预订网站
2019/11/20 全球购物
四川internet信息高速公路(C#)笔试题
2012/02/29 面试题
学生实习介绍信
2014/01/15 职场文书
讲文明树新风公益广告宣传方案
2014/02/25 职场文书
市场营销专业毕业生求职信
2014/03/26 职场文书
优秀乡村医生先进事迹材料
2014/08/23 职场文书
辞职信格式范文
2015/05/13 职场文书
毕业答辩开场白范文
2015/05/27 职场文书
新学期家长寄语2016
2015/12/03 职场文书
资深HR教你写好简历中的自我评价
2019/05/07 职场文书
golang日志包logger的用法详解
2021/05/05 Golang
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
2021/05/31 Python
拒绝盗图!教你怎么用python给图片加水印
2021/06/04 Python
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android
详解如何使用Nginx解决跨域问题
2022/05/06 Servers