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


猜你喜欢
- 本文实例讲述了PHP global全局变量的使用与注意事项。分享给大家供大家参考,具体如下:使用global在方法里面声明外部变量为全局变量
- 文章摘要:其实这里casperjs与python没有直接关系,主要依赖casperjs调用phantomjs webkit获取html文件内
- RabbitMQ 6种工作模式对RabbitMQ 6种工作模式(简单模式、工作模式、订阅模式、路由模式、主题模式、RPC模式)进行场景和参数
- 我相信站长们做网站的最终目的还是想要获得收入的,我想象站长们大部分的都做Google的联盟的,我相信站长中大部分的人都有考虑过做英文站的,但
- 在1943年,沃伦麦卡洛可与沃尔特皮茨提出了第一个脑神经元的抽象模型,简称麦卡洛可-皮茨神经元(McCullock-Pitts neuron
- 阅读上一篇:垂直栅格与渐进式行距(上) 新问题来也匆匆,去也“冲冲”。距上次发布垂直栅格与渐进式行距(上)发布,已经不知不觉过去了
- Sql Server为每个触发器都创建了两个专用表:Inserted表和Deleted表。这两个表由系统来维护,它们存在于内存中
- 一、检测网络信息和系统信息 在Frontpage 2000 的Explorer管理器中选择帮助(Help)|关于Frontpage管理器(A
- 本篇文章给大家带来的内容是关于Python如何筛选序列中的元素 ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。1、需求序列
- 楔子随着自媒体时代,现在对视频的处理变得越来越常见。我们可以使用Adobe的一些专业工具,但是效率不高;如果只是对视频进行一些简单的处理的话
- ASP与存储过程(Stored Procedures)的文章不少,但是我怀疑作者们是否真正实践过。我在初学时查阅过大量相关资料,发现其中提供
- 在matlab中,存在执行直接得函数来添加高斯噪声和椒盐噪声。Python-OpenCV中虽然不存在直接得函数,但是很容易使用相关的函数来实
- python pip安装的包放在哪里使用 pip list 查看已安装的包名然后用 pip show 包名,就可以看到安装到哪了通常安装在p
- 如下所示:self.findChild(QComboBox, "name") self is classfirst pa
- 闭包函数是什么?在开始学习的闭包的时候,大家很能都比较难理解.就从他的官方解释来说,都是比较概念化的.不过我们也还是从闭包的含义出发。闭包是
- 1.函数就是对象,而函数名是指向函数对象的指针,不会与某个函数绑定。 2.函数没有重载(函数重载:同一个函数名对应着多个函数的实现.) Fo
- 如何在线查询本地机的文件?看看下面的例子,默认子目录与子虚拟目录为同一级别且名称一致,另我们使用了"http://intels.n
- 配置文件是每个项目最基础的部分,也是不可或缺的部分,比如:数据库连接、中间件属性等常见的配置。提前准备appsettings.json 文件
- Python的文件类型介绍:.py python的源代码文件.pyc Python源代码import后,编译生成的字节码.pyo Pytho
- 这片文章大体概括了一些设计网页中的大问题。希望能给你做下一个网页时给予一些儿启发。1、记住:你能掌控的时间是有限的我仅仅用4秒钟就能浏览完平