最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python更新數(shù)據(jù)庫腳本兩種方法及對比介紹

 更新時間:2017年07月27日 16:13:55   作者:RGC  
這篇文章給大家介紹了Python更新數(shù)據(jù)庫腳本兩種方法及數(shù)據(jù)庫查詢?nèi)N方式,然后在文章下面給大家介紹了兩種方式對比介紹,非常不錯,感興趣的朋友參考下吧

最近項目的兩次版本迭代中,根據(jù)業(yè)務(wù)需求的變化,需要對數(shù)據(jù)庫進(jìn)行更新,兩次分別使用了不同的方式進(jìn)行更新。

第一種:使用python的MySQLdb模塊利用原生的sql語句進(jìn)行更新

import MySQLdb
#主機(jī)名
HOST = '127.0.0.1'
#用戶名
USER = "root"
#密碼
PASSWD = "123456"
#數(shù)據(jù)庫名
DB = "db_name"
# 打開數(shù)據(jù)庫連接
db=MySQLdb.connect(HOST,USER,PASSWD,DB)
# 獲取操作游標(biāo)
cursor=db.cursor()
if __name__ == '__main__':
  if cursor:
    command_a = "update tables_one set status=5 where status=0"
    # 使用execute方法執(zhí)行SQL語句
    cursor.execute(command_a)
    # 提交到數(shù)據(jù)庫執(zhí)行
    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()
    # 關(guān)閉數(shù)據(jù)庫連接
    db.close()

數(shù)據(jù)庫查詢?nèi)N方式

  • fetchone(): 該方法獲取下一個查詢結(jié)果集。結(jié)果集是一個對象
  • fetchall():接收全部的返回結(jié)果行.
  • rowcount: 這是一個只讀屬性,并返回執(zhí)行execute()方法后影響的行數(shù)。

第二種:使用python的框架flask和sqlalchemy進(jìn)行更新

# -*- coding:utf-8 -*-
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.sql import text
HOST = '127.0.0.1'
USER = "root"
PASSWD = "123456"
DB = "carrier_test"
CHARTSET = "utf8"
app = Flask(__name__,instance_relative_config = True)
#鏈接數(shù)據(jù)庫路徑
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://%s:%s@127.0.0.1:3306/%s?charset=%s' %(USER,PASSWD,DB,CHARTSET)
#如果設(shè)置成 True (默認(rèn)情況),F(xiàn)lask-SQLAlchemy 將會追蹤對象的修改并且發(fā)送信號。這需要額外的內(nèi)存, 如果不必要的可以禁用它。
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
#如果設(shè)置成 True,SQLAlchemy 將會記錄所有 發(fā)到標(biāo)準(zhǔn)輸出(stderr)的語句,這對調(diào)試很有幫助。
app.config['SQLALCHEMY_ECHO'] = False
# 數(shù)據(jù)庫連接池的大小。默認(rèn)是數(shù)據(jù)庫引擎的默認(rèn)值 (通常是 5)。
app.config['SQLALCHEMY_POOL_SIZE'] = 6
db = 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 '<table_one com_name %r>' % self.com_name
class 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 '<table_two id %r>' % self.id
def 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='只是測試使用,不用關(guān)心表間關(guān)系').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 '表同步結(jié)束'
64 
if __name__=='__main__':
  #執(zhí)行更新數(shù)據(jù)庫函數(shù)
  commits_to_three_judge()

兩種方式對比:

1.在實際項目中,數(shù)據(jù)庫的更新 需要用到很多相關(guān)函數(shù)進(jìn)行數(shù)據(jù)的收集,判斷是否滿足條件等,而這些相關(guān)函數(shù)在項目中都是用 Sqlalchemy進(jìn)行數(shù)據(jù)相關(guān)操作,比如第二種方法里的db_commit_all()函數(shù)

2.使用第二種方法,直接復(fù)制這些函數(shù)到腳本中即可,如果使用第一種方法,則需要重寫相關(guān)函數(shù),增加開發(fā)時間,浪費精力。

3.如果項目中是使用flask進(jìn)行開發(fā),推薦使用第二種方法進(jìn)行數(shù)據(jù)庫更新。

總結(jié)

以上所述是小編給大家介紹的Python更新數(shù)據(jù)庫腳本兩種方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評論

新田县| 泸定县| 东山县| 德阳市| 镇赉县| 汉阴县| 淮北市| 平遥县| 邢台县| 永和县| 沙坪坝区| 临夏市| 乐亭县| 蒙山县| 盐山县| 元阳县| 怀宁县| 岳普湖县| 延津县| 黄梅县| 抚州市| 抚远县| 柳州市| 区。| 陇西县| 富锦市| 濮阳县| 南皮县| 邢台县| 吉林省| 肇源县| 澎湖县| 清苑县| 江油市| 西青区| 象州县| 苍梧县| 阆中市| 南陵县| 惠水县| 泾川县|