Python操作mysql数据库实现增删查改功能的方法
作者:坏蛋是我 发布时间:2024-01-19 13:02:18
标签:Python,mysql数据库
本文实例讲述了Python操作mysql数据库实现增删查改功能的方法。分享给大家供大家参考,具体如下:
#coding=utf-8
import MySQLdb
class Mysql_Oper:
def __init__(self,host,user,passwd,db):
self.host=host
self.user=user
self.passwd=passwd
self.database=db
def db_connecet(self):
try:
#连接
conn=MySQLdb.connect(host=self.host,user=self.user,passwd=self.passwd,db=self.database,charset="utf8")
cursor = conn.cursor()
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
def drop_table(self,table):
try:
#删除表
sql = "drop table if exists" + table
cursor.execute(sql)
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
def create_table(self,table):
try:
if table=="dept":
#创建
sql = "create table if not exists dept(deptno int primary key, dname varchar(50),loc varchar(50))"
cursor.execute(sql)
elif table=="emp":
sql == "create table if not exists emp(empno INT PRIMARY KEY,ename VARCHAR(50),job VARCHAR(50),mgr INT,hiredate DATE,sal DECIMAL(7,2),COMM DECIMAL(7,2),deptno INT,loc varchar(50),CONSTRAINT fk_emp FOREIGN KEY(mgr) REFERENCES emp(empno))"
cursor.execute(sql)
elif table=="salgrade":
sql = "create table if not exists salgrade(grade INT PRIMARY KEY,losal INT,hisal INT)"
cursor.execute(sql)
elif table=="stu":
#创建
sql = "create table if not exists dept(sid INT PRIMARY KEY,sname VARCHAR(50),age INT,gander VARCHAR(10),province VARCHAR(50),tuition INT)"
cursor.execute(sql)
else:
print u"输入错误的表名,表明为dept、emp、salgrade、stu..."
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
def inser_onedata_table(self,table):
try:
if table=="dept":
sql = "insert into dept values(%s,%s,%s)"
param = (40, 'cai wu bu', 'wu han')
n = cursor.execute(sql,param)
print 'insert',n
elif table=="emp":
sql = "insert into emp values(%s,%s,%s,%s,%s,%s,%s,%s)"
param = (1009, 'a niu', 'dong shi zhang', NULL, '2001-11-17', 50000, NULL, 10)
n = cursor.execute(sql,param)
print 'insert',n
elif table=="salgrade":
sql = "insert into salgrade values(%s,%s,%s)"
param = (1, 7000, 12000)
n = cursor.execute(sql,param)
print 'insert',n
elif table=="stu":
sql = "insert into stu values(%s,%s,%s,%s,%s,%s)"
param = ('1', '001', '23', 'nan', 'bei jing', '1500')
n = cursor.execute(sql,param)
print 'insert',n
else:
print u"输入错误的表名,表明为dept、emp、salgrade、stu..."
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
def inser_muldata_table(self,table):
try:
if table=="dept":
sql = "insert into dept values(%s,%s,%s)"
param = ((10, 'jiao yan bu', 'bei jing'),(20, 'xue gong bu', 'shang hai'),(30, 'xiao shou bu', 'guang zhou'))
n = cursor.executemany(sql,param)
print 'insert',n
elif table=="emp":
sql = "insert into emp values(%s,%s,%s,%s,%s,%s,%s,%s)"
param = ((1004, 'liu bei', 'jing li', 1009, '2001-04-02', 29750, NULL, 20),
(1006, 'guan yu', 'jing li', 1009, '2001-05-01', 28500, NULL, 30),
(1008, 'zhu ge liang', 'fen xi shi', 1004, '2007-04-19', 30000, NULL, 20),
(1013, 'pang', 'fen xi shi', 1004, '2001-12-03', 30000, NULL, 20),
(1002, 'dai', 'xiao shou yuan', 1006, '2001-02-20', 16000, 3000, 30),
(1003, 'tian zheng', 'xiao shou yuan', 1006, '2001-02-22', 12500, 5000, 30),
(1005, 'xie xun', 'xiao shou yuan', 1006, '2001-09-28', 12500, 14000, 30),
(1010, 'wei yi xiao', 'xiao shou yuan', 1006, '2001-09-08', 15000, 0, 30)
)
n = cursor.executemany(sql,param)
print 'insert',n
elif table=="salgrade":
sql = "insert into salgrade values(%s,%s,%s)"
param = ((2, 12010, 14000),(3, 14010, 20000),(4, 20010, 30000),(5, 30010, 99990))
n = cursor.executemany(sql,param)
print 'insert',n
elif table=="stu":
sql = "insert into stu values(%s,%s,%s,%s,%s,%s)"
param = ( ('2', '002', '25', 'nan', 'liao ning', '2500'),
('3', '003', '22', 'nan', 'bei jing', '3500'),
('4', '004', '25', 'nan', 'bei jing', '1500'),
('5', '005', '23', 'nv', 'bei jing', '1000'),
('6', '006', '22', 'nv', 'shan dong', '2500'),
('7', '007', '21', 'nv', 'bei jing', '1600'),
('8', '008', '23', 'nan', 'bei jing', '3500'),
('9', '009', '23', 'nv', 'guang zhou', '2500'),
('10', '010', '18', 'nan', 'shan xi', '3500'),
('11', '011', '23', 'nan', 'hu bei', '4500'),
('12', '011', '24', 'nan', 'bei jing', '1500'),
('13', '011', '24', 'nan', 'liao ning', '2500'),
('14', '011', '22', 'nan', 'bei jing', '3500'),
('15', '011', '25', 'nan', 'bei jing', '1500'),
('16', '011', '23', 'nv', 'bei jing', '1000'),
('17', '011', '22', 'nv', 'shan dong', '2500'),
('18', '011', '21', 'nv', 'bei jing', '1600'),
('19', '011', '23', 'nan', 'bei jing', '3500'),
('20', '011', '23', 'nv', 'guang zhou', '2500'),
('21', '011', '18', 'nan', 'shan xi', '3500'),
('22', '011', '23', 'nan', 'hu bei', '4500'),
('23', '011', '23', 'nan', 'bei jing', '1500'),
('24', '011', '25', 'nan', 'liao ning', '2500'),
('25', '011', '22', 'nan', 'bei jing', '3500'),
('26', '011', '25', 'nan', 'bei jing', '1500'),
('27', '011', '23', 'nv', 'bei jing', '1000'),
('28', '011', '22', 'nv', 'shan dong', '2500'),
('29', '011', '21', 'nv', 'bei jing', '1600'),
('30', '011', '23', 'nan', 'bei jing', '3500'),
('31', '011', '23', 'nv', 'guang zhou', '2500'),
('32', '011', '18', 'nan', 'shan xi', '3500'),
('33', '033', '23', 'nan', 'hu bei', '4500'),
('34', '034', '23', 'nan', 'bei jing', '1500'),
('35', '035', '25', 'nan', 'liao ning', '2500'),
('36', '036', '22', 'nan', 'bei jing', '3500'),
('37', '037', '25', 'nan', 'bei jing', '1500'),
('38', '038', '23', 'nv', 'bei jing', '1000'),
('39', '039', '22', 'nv', 'shan dong', '2500'),
('40', '040', '21', 'nv', 'bei jing', '1600'),
('41', '041', '23', 'nan', 'bei jing', '3500'),
('42', '042', '23', 'nv', 'guang zhou', '2500'),
('43', '043', '18', 'nan', 'shan xi', '3500'),
('44', '044', '23', 'nan', 'hu bei', '4500'),
('45', '045', '23', 'nan', 'bei jing', '1500'),
('46', '046', '25', 'nan', 'liao ning', '2500'),
('47', '047', '22', 'nan', 'bei jing', '3500'),
('48', '048', '25', 'nan', 'bei jing', '1500'),
('49', '049', '23', 'nv', 'bei jing', '1000'),
('50', '050', '22', 'nv', 'shan dong', '2500'),
('51', '051', '21', 'nv', 'bei jing', '1600'),
('52', '052', '23', 'nan', 'bei jing', '3500'),
('53', '053', '23', 'nv', 'guang zhou', '2500'),
('54', '054', '18', 'nan', 'shan xi', '3500'),
('55', '055', '23', 'nan', 'hu bei', '4500')
)
n = cursor.executemany(sql,param)
print 'insert',n
else:
print u"输入错误的表名,表明为dept、emp、salgrade、stu..."
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
def update_table(self,table,no,upno):
try:
if table=="dept":
#创建
sql = "update dept set deptno=%s where deptno=" +no
param = (upno)
n = cursor.execute(sql,param)
print 'update',n
elif table=="emp":
sql = "update emp set empno=%s where empno=" +no
param = (upno)
n = cursor.execute(sql,param)
print 'update',n
elif table=="salgrade":
sql = "update salgrade set grade=%s where grade=" +no
param = (upno)
n = cursor.execute(sql,param)
print 'update',n
elif table=="stu":
sql = "update stu set sname=%s where sname=" +no
param = (upno)
n = cursor.execute(sql,param)
print 'update',n
else:
print u"输入错误的表名,表明为dept、emp、salgrade、stu..."
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
def query_data(self,table):
try:
#查询
sql="select * from "+table
n = cursor.execute(sql)
print cursor.fetchall()
for row in cursor.fetchall():
print row
for r in row:
print r
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
def delete_data(self,table,no)
try:
if table=="dept":
sql = "delete from dept where deptno=%s"
param = (upno)
n = cursor.execute(sql,param)
print 'delete',n
elif table=="emp":
sql = "delete from emp where empno=%s"
param = (upno)
n = cursor.execute(sql,param)
print 'delete',n
elif table=="salgrade":
sql = "delete from salgrade where grade=%s"
param = (upno)
n = cursor.execute(sql,param)
print 'delete',n
elif table=="stu":
sql = "delete from stu where sname=%s "
param = (upno)
n = cursor.execute(sql,param)
print 'delete',n
else:
print u"输入错误的表名,表明为dept、emp、salgrade、stu..."
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
del down_db(self):
try:
cursor.close()
#提交
conn.commit()
#关闭
conn.close()
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
mysqlDB=Mysql_Oper("127.0.0.1","root","root","exam")
mysqlDB.db_connecet()
mysqlDB.drop_table("dept")
for table in ["dept","emp","salgrade","stu"]
mysqlDB.create_table(table)
mysqlDB.inser_onedata_table(table)
mysqlDB.inser_muldata_table(table)
mysqlDB.query_data(table)
mysqlDB.down_db()
后期我会把数据整合到CSV文件中,操作CSV文件对数据进行操作
希望本文所述对大家Python程序设计有所帮助。
来源:http://blog.csdn.net/henni_719/article/details/51863222
0
投稿
猜你喜欢
- 一、前言在Python中,类表示具有相同属性和方法的对象的集合。在使用类时,需要先定义类,然后再创建类的实例,通过类的实例就可以访问类中的属
- 数据库的启动过程(3个台阶)1.nomountshutdown --> nomountstartup nomountselect st
- 【译者的话】我们曾经在《透视色轮》一文中探讨过色轮的构成及作用,但你可能更多的只是将其作为了解颜色关系的一个工具,却不一定将其作为实际设计中
- 应用背景背景:“由于工作需要可能需要对一些文件进行重命名的处理,但是可能操作起来比较烦,点错了就命名失败或者没带鼠标,用控制板操作起来比较麻
- 如下,以创建系统用户举例,配置文件配置普通用户信息,登入后切换root用户,创建一个指定名字和密码的系统用户:def create_user
- 本文研究的主要是python+matplotlib实现动态绘制图片(交互式绘图)的相关内容,具体介绍和实现代码如下所示。最近在研究动态障碍物
- 1 概述在日常 Web 端产品的使用中,一般都会支持扫码登录,这种方式操作简单,相对传统的手机号登录等方式速度更快、安全性更高,还可以增加自
- ThinkPHP模板的empty标签用于判断模板变量是否为空值。ThinkPHP模板empty标签用来判断模板变量是否为空值,其功能相当于P
- //获得视频文件的缩略图function getVideoCover($file,$time,$name) { &nb
- 一、现状Python 有诸多优秀的 Web 开发框架供我们使用,比如Django、Flask、Sanic。正常的情况下,我们基于这些 Web
- 了兑现我对大家的承诺,我们现在立即就将“借助数据库和ASP程序”编写出来的,可以同时适用于IIS和P
- 本文实例讲述了JS实现仿Windows经典风格的选项卡Tab切换代码。分享给大家供大家参考,具体如下:这款仿Windows风格的选项卡,带有
- composer更新依赖包compoesr 的 require/update 都可以更新指定的依赖包 (升级 / 降级)。require 更
- python生成随机数都有哪些办法呢使用 random 模块:random模块是python内置的模块,使用方法如random.randin
- 背景形态学处理方法是基于对二进制图像进行处理的,卷积核决定图像处理后的效果;形态学的处理哦本质上相当于对图像做前处理,提取出有用的特征,以便
- 最近在代码评审的过程,发现挺多错误使用eval导致代码注入的问题,比较典型的就是把eval当解析dict使用,有的就是简单的使用eval,有
- 创建一个apps包 专门来放子应用创建users子应用 处理用户事务追加导包路径在settings中用 print(sys.path) 查看
- use mysql; u
- ie的javascript失效了,不是设置的问题那么就可能是以下几点问题了~安装KAV可能会破坏系统的javascript关联,失javas
- 1. auth介绍Django 自带一个用户验证系统。它负责处理用户账号、组、权限和基于cookie的用户会话。认证系统由以下部分