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

Python-Flask:動態(tài)創(chuàng)建表的示例詳解

 更新時間:2019年11月22日 16:32:23   作者:Odyssues_lee  
今天小編就為大家分享一篇Python-Flask:動態(tài)創(chuàng)建表的示例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

今天小編從項目的實際出發(fā),由于項目某一個表的數(shù)據(jù)達到好幾十萬條,此時數(shù)據(jù)的增刪查改會很慢;為了增加提高訪問的速度,我們引入動態(tài)創(chuàng)建表。

代碼如下:

from app_factory import app
from sqlalchemy import Column, String, Integer
 
class ProjectModel(app.db.model, app.db.Mixin):
 
  tablename = 'Project_'
 
  ID = Column(String(50), name='ID', doc='id')
  PROJECTNUMBER = Column(String(100), name='PROJECTNUMBER', doc='項目編號')
  ......
 
 
  @staticmethod
  def create_table(project_number)
    table_name = ProjectModel.tablename + projectnumber
    structs = [
      {'fieldname': 'id', 'type': 'varchar2(50)', 'primary': True, 'default': ''},
      {'fieldname': 'PROJECTNUMBER', 'type': 'varchar2(50)', 'default': 0, 'isnull':         
        True},
      .......
    ]
    app.db.create_table(table_name, structs)

那么,內(nèi)層函數(shù)是如何創(chuàng)建的呢?其實就是拼接sql語句create table ....

代碼如下:

class SQLAlchemyDB(SQLAlchemy):
  def __init__(self, app)
    super(SQLAlchemyDB, self).__init__(app)
    self.__app = app
    self.engine.echo = False
    self.conn = self.engine.connect()
    self.Model.to_dict() = lambda self:{c.name:getattr(self, c.name, None) for c in self.__table__.columns}
    self.Session = sessionmaker(bind=self.engine)
    self.ScopedSession = lambda: scoped_session(self.Session)
 
  # 釋放碎片空間
  def free_idle_space(self):
    return self.execute('purge recyclebin')
  
  def connstatus(self):
    return self.engine.pool.status()
  
  def close(self):
    self.conn.close()
    self.engine.dispose()
 
  # 非返回數(shù)據(jù)的記錄語句
  def execute(self, sqlexpr)
    try:
      ret = self.conn.execute(sqlalchemy.text(sqlexpr))
    except Exception as err:
      return False, str(err)
    except sqlalchemy.exc.InvalidRequestError as err:
      return False, str(err)
 
    return True, ''
 
  # 動態(tài)拼接sql語句, 創(chuàng)建表
  def create_table(self, tablename, structs):
    fieldinfos = []
    for struct in structs:
      defaultvalue = struct.get('default')
      if defaultvalue :
        defaultvalue = "'{0}'".format(defaultvalue) if type(defaultvalue) == 'str' else str(defaultvalue)
      fieldinfos.append('{0} {1} {2} {3} {4}'.format(struct['fieldname'], struct['type'], 'primary key' if struct.get('primary') else '', ('default' + defaultvalue) if defaultvalue else '', '' if struct.get('isnull') else 'not null'))
    sql = 'create table {0} ({1})'.format(tablename, ','.join(fieldinfos))
    ret, err = self.execute(sql)
    if ret:
      self.__app.sync_record(tablename, 'sql_createtable', {}, sql)
    return ret, err
 
  # 動態(tài)判斷表是否存在 
  def existtable(self, tablename):
    ret, err = self.GetRecordCount("user_all_table", "TABLE_NAME='" + tablename +"'")
    return ret>0, err
  
  def GetRecordCount(self, tablename, where= None):
    sql = 'select count(*) as num from {0} {1}'.format(tablename,('where' + where)) if where != None else '')
    recs, err = self.query(sql)
    if recs:
      for rec in recs:
        return rec['num'], '' 
    return -1 , err
  
  # 查詢數(shù)據(jù)記錄
  def query(self, sqlexpr):
    try:
      recs = self.conn.execute(sqlalchemy.text(sqlexpr)
      return recs, ''
    expect Exception as err:
      return None, str(err)  
    expect sqlalchemy.exc.InvalidRequestError as err:
      return None, str(err)  
 

那么,類似的:

1-如果動態(tài)的對已經(jīng)創(chuàng)建的表格進行增刪查改,那么可以用類似的思想,進行對sql語句進行拼接,insert select delete update

2-判斷是否存在此字段,進去拼接查詢這個字段查出的數(shù)據(jù)是否為空(count)

3-在原來表的基礎(chǔ)上增加字段,或者修改字段,用alter

以上這篇Python-Flask:動態(tài)創(chuàng)建表的示例詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python如何輸出百分比

    Python如何輸出百分比

    這篇文章主要介紹了Python 如何輸出百分比,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • python如何在word中存儲本地圖片

    python如何在word中存儲本地圖片

    這篇文章主要介紹了python如何在word中存儲本地圖片,想了解docx模塊的同學(xué),可以參考下
    2021-04-04
  • 對python sklearn one-hot編碼詳解

    對python sklearn one-hot編碼詳解

    今天小編就為大家分享一篇對python sklearn one-hot編碼詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • matplotlib簡介,安裝和簡單實例代碼

    matplotlib簡介,安裝和簡單實例代碼

    這篇文章主要介紹了matplotlib簡介,安裝和簡單實例代碼,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Python安裝Matplotlib包完整步驟記錄

    Python安裝Matplotlib包完整步驟記錄

    這篇文章主要給大家介紹了關(guān)于Python安裝Matplotlib包的相關(guān)資料,Matplotlib是一個Python 2D繪圖庫,它以多種硬拷貝格式和跨平臺的交互式環(huán)境生成出版物質(zhì)量的圖形,需要的朋友可以參考下
    2023-12-12
  • 微信跳一跳自動運行python腳本

    微信跳一跳自動運行python腳本

    這篇文章主要為大家詳細介紹了微信小程序跳一跳自動運行腳本,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python實現(xiàn)的HTTP并發(fā)測試完整示例

    Python實現(xiàn)的HTTP并發(fā)測試完整示例

    這篇文章主要介紹了Python實現(xiàn)的HTTP并發(fā)測試,涉及Python多線程并發(fā)操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2015-05-05
  • django框架中ajax的使用及避開CSRF 驗證的方式詳解

    django框架中ajax的使用及避開CSRF 驗證的方式詳解

    這篇文章主要介紹了django框架中ajax的使用及避開CSRF 驗證的方式,結(jié)合實例形式分析了Django框架ajax后臺交互與排除驗證csrf相關(guān)操作技巧,需要的朋友可以參考下
    2019-12-12
  • 圖文詳解OpenCV中光流以及視頻特征點追蹤

    圖文詳解OpenCV中光流以及視頻特征點追蹤

    光流是空間運動物體在觀察成像平面上的像素運動的瞬時速度,是利用圖像序列中像素在時間域上的變化以及相鄰幀之間的相關(guān)性來找到上一幀跟當前幀之間存在的相應(yīng)關(guān)系,這篇文章主要給大家介紹了關(guān)于OpenCV中光流以及視頻特征點追蹤的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • 基于python實現(xiàn)聊天室程序

    基于python實現(xiàn)聊天室程序

    這篇文章主要為大家詳細介紹了基于python實現(xiàn)聊天室程序,該程序由客戶端與服務(wù)器構(gòu)成,使用UDP服務(wù),實現(xiàn)了群發(fā)、私發(fā)、點對點文件互傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07

最新評論

潞城市| 台安县| 靖边县| 韩城市| 滨州市| 丹巴县| 双牌县| 庆城县| 德阳市| 和政县| 高淳县| 兴化市| 五莲县| 右玉县| 西宁市| 惠东县| 赤峰市| 临夏市| 南靖县| 静安区| 子长县| 广饶县| 调兵山市| 抚顺市| 桃园市| 永德县| 锡林郭勒盟| 澄江县| 土默特右旗| 马尔康县| 永丰县| 金塔县| 淅川县| 阳西县| 嘉义市| 治县。| 普陀区| 泌阳县| 雅江县| 安庆市| 浏阳市|