python中可以使用两种方法实现更新数据库脚本的示例

最近项目的两次版本迭代中,根据业务需求的变化,需要对数据库进行更新,两次分别使用了不同的方式进行更新。

第一种:使用python的MySQLdb模块利用原生的sql语句进行更新

import MySQLdb#主机名HOST = '127.0.0.1'#用户名USER = "root"#密码PASSWD = "123456"#数据库名DB = "db_name"# 打开数据库连接db=MySQLdb.connect(HOST,USER,PASSWD,DB)# 获取操作游标cursor=db.cursor()if __name__ == '__main__':    if cursor:        command_a = "update tables_one set status=5 where status=0"        # 使用execute方法执行SQL语句        cursor.execute(command_a)        # 提交到数据库执行        db.commit()        command2 = "select field from tables_one where id =12"        ret2 = cursor.execute(command2)        # 获取所有记录列表        ret2=cursor.fetchall()        for item in ret2:                command3 = "insert into tables_two(name) values (%s);" % (item[0])                fin=cursor.execute(command3)                db.commit()        # 关闭数据库连接        db.close()

登录后复制

数据库查询三种方式

fetchone(): 该方法获取下一个查询结果集。结果集是一个对象

fetchall():接收全部的返回结果行.

立即学习“Python免费学习笔记(深入)”;

rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。

 

第二种:使用python的框架flask和sqlalchemy进行更新

# -*- coding:utf-8 -*-from flask import Flaskfrom flask_sqlalchemy import SQLAlchemyfrom sqlalchemy.sql import textHOST = '127.0.0.1'USER = "root"PASSWD = "123456"DB = "carrier_test"CHARTSET = "utf8"app = Flask(__name__,instance_relative_config = True)#链接数据库路径app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://%s:%s@127.0.0.1:3306/%s?charset=%s' %(USER,PASSWD,DB,CHARTSET)#如果设置成 True (默认情况),Flask-SQLAlchemy 将会追踪对象的修改并且发送信号。这需要额外的内存, 如果不必要的可以禁用它。app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True#如果设置成 True,SQLAlchemy 将会记录所有 发到标准输出(stderr)的语句,这对调试很有帮助。app.config['SQLALCHEMY_ECHO'] = False# 数据库连接池的大小。默认是数据库引擎的默认值 (通常是 5)。app.config['SQLALCHEMY_POOL_SIZE'] = 6db = SQLAlchemy(app)class Table_one(db.Model):    __tablename__ = 'table_one'    id = db.Column('id', db.Integer, primary_key=True, autoincrement=True)    com_name = db.Column('com_name', db.String(30), nullable=False)    com_about = db.Column('com_about', db.String(200), nullable=False)    def __repr__(self):        return '' % self.com_nameclass Table_two(db.Model):    __tablename__ = 'table_two'    id = db.Column('id', db.Integer, primary_key=True, autoincrement=True)    reason = db.Column('reason', db.String(128), nullable=True)    create_time = db.Column('create_time', db.TIMESTAMP, server_default=text('now()'))    status = db.Column('status', db.Integer, nullable=False, default=0)    def __repr__(self):        return '
' % self.iddef db_commit_all(lists):    try:        db.session.add_all(lists)        db.session.commit()        return 'SUCCESS'    except Exception,e:        return 'Fail!!!'def commits_to_three_judge():    com_sta_obj = Table_one.query.filter_by(com_name='只是测试使用,不用关心表间关系').all()    for ite in com_sta_obj:        ship_obj = Table_two.query.filter_by(id=ite.id).first()        if ship_obj:            if int(ship_obj.status) == 2:                ite.status = 0                print db_commit_all([ite])    print '表同步结束'64 if __name__=='__main__':    #执行更新数据库函数    commits_to_three_judge()

登录后复制

 

两种方式对比:

1.在实际项目中,数据库的更新 需要用到很多相关函数进行数据的收集,判断是否满足条件等,而这些相关函数在项目中都是用 Sqlalchemy进行数据相关操作,比如第二种方法里的db_commit_all()函数

2.使用第二种方法,直接复制这些函数到脚本中即可,如果使用第一种方法,则需要重写相关函数,增加开发时间,浪费精力。

3.如果项目中是使用flask进行开发,推荐使用第二种方法进行数据库更新。

以上就是python中可以使用两种方法实现更新数据库脚本的示例的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2267615.html

(0)
上一篇 2025年2月27日 10:11:05
下一篇 2025年2月24日 05:28:36

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python开发之多个定时任务在单线程下执行的实例分析

    单线程多定时任务  1、初始版本: 思路:定时器,说白了就是延时执行指定的程序,目前自己重构python里面的定时器不太现实,能力达不到,所以延时操作时还得用到系统定时器,不过我们可以改一下规则;把所有要进行定时操作的程序添加到特定列表中,…

    2025年2月27日 编程技术
    200
  • 关于python方法无法在线程中使用的解决办法

      在python中,定义一个方法,直接调用可以,但是创建一个线程来调用就可能导致失败。这种现象多出现在使用com对象进行系统操作时,而且是以线程的形式调用。   异常提示如下: syntax error。WMI returned a sy…

    编程技术 2025年2月27日
    200
  • python中关于装饰器的学习

    定义:本质上就是个函数,(装饰器其他函数)就是为了给其他函数添加附加功能 原则:1.不能修改被装饰的函数的源代码            2.不能修改被装饰的函数的调用方式 import timedef timer(hello):    de…

    编程技术 2025年2月27日
    200
  • 如何在网上自学Python?

    现在的网络技术十分发达,足不出户就可以学习到很多自己感兴趣的知识。当然,我们学习python也一样可以在网上学习。下面我就来介绍一下有关我自己本身在网上自学python的经历。 我的学习网站是PHP中文网.虽然叫PHP中文网,但是网站上的知…

    2025年2月27日
    200
  • Python入门学习的流程分享

    所谓师傅领进门修行看个人,自己的勤奋非常重要,但是前提是要有个好的老师领进正确的门,不能带跑偏了。学习python也一样,入门很重要,下面我就分享下学习python的入门经验分享。 1.开发环境的搭建 http://www.php.cn/p…

    2025年2月27日
    200
  • Python基本语法大全

    1、python的对汉字的支持 #!/usr/bin/python#coding: UTF-8 print “你好,世界”; 2、Python标识符 在python里,标识符有字母、数字、下划线组成。 在python…

    编程技术 2025年2月27日
    200
  • Python中基本且又常用的算法

    这篇文章主要学习python常用算法,python常用排序算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本节内容 算法定义时间复杂度空间复杂度常用算法实例 1.算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是…

    2025年2月27日 编程技术
    200
  • Python中的函数详解

    Python中的函数,无论是命名函数,还是匿名函数,都是语句和表达式的集合。在Python中,函数是第一个类对象,这意味着函数的用法并没有限制。Python函数的使用方式就像Python中其他值一样,例如字符串和数字等。Python函数拥有…

    编程技术 2025年2月27日
    200
  • Python模块介绍

      有过c语言编程经验的朋友都知道在c语言中如果要引用sqrt这个函数,必须用语句”#include”引入math.h这个头文件,否则是无法正常进行调用的。那么在python中,如果要引用一些内置的函数,该怎么处理呢…

    编程技术 2025年2月27日
    200
  • Python 数据流操作

    Python 文件或文件夹操作 shutil该模块提供了很多高级的多文件和多文件集合的操作,尤其提供了支持文件复制和删除的函数。 1、文件夹和文件操作 import shutil shutil.copyfile(src, dst)    复…

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论