Python SqlAlchemy動(dòng)態(tài)添加數(shù)據(jù)表字段實(shí)例解析
本文研究的主要是Python SqlAlchemy動(dòng)態(tài)添加數(shù)據(jù)表字段,具體如下。
我們知道使用SqlAlchemy創(chuàng)建類(lèi)來(lái)映射數(shù)據(jù)表,類(lèi)屬性等于數(shù)據(jù)庫(kù)字段,但有時(shí)候要在我們創(chuàng)建表的時(shí)候,不確定數(shù)據(jù)表字段數(shù)量,遇到這種情況,應(yīng)如何解決?
先看常規(guī)用法
from sqlalchemy import create_engine,Column,String,Integer class Mybase(Base): #表名 __tablename__ ='mycars' #字段,屬性 myid=Column(String(50), primary_key=True) price=Column(String(50))
上述代碼是創(chuàng)建mycars數(shù)據(jù)表,字段分別為myid和price,字段數(shù)量是固定,那么要實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建數(shù)量不明確的字段,代碼如下:
from sqlalchemy import * from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base engine = create_engine('mysql+pymysql://root:1234@localhost/test?charset=utf8', echo=False) # engine = create_engine('sqlite:////MyDB.sqlite3', echo=False) DBSession = sessionmaker(bind=engine) session = DBSession() Base = declarative_base() #定義類(lèi) class table_class(Base): __tablename__ = 'aaa' id=Column(Integer,primary_key=True) # 動(dòng)態(tài)添加字段 for i in range(3): setattr(table_class,'Col'+str(i),(Column('Col'+str(i), String(50),comment='Col'+str(i)))) Base.metadata.create_all(engine) # 添加數(shù)據(jù) dt=table_class(Col1='aaa',Col2="aaa") session.add(dt) session.commit()
上述代碼可看出,通過(guò)使用setattr()
來(lái)實(shí)現(xiàn)動(dòng)態(tài)添加字段,而且字段名可根據(jù)實(shí)際命名,comment是字段注釋?zhuān)@個(gè)只有SqlAlchemy 1.2版本才有的功能 (SqlAlchemy 1.2 安裝 :pip install –pre sqlalchemy)
運(yùn)行結(jié)果:
當(dāng)然,在插入數(shù)據(jù)和查詢數(shù)據(jù)的時(shí)候,會(huì)出現(xiàn)無(wú)法確定代碼中對(duì)應(yīng)字段的屬性??梢允褂肧qlAlchemy執(zhí)行sql實(shí)現(xiàn)插入
總結(jié)
以上就是本文關(guān)于Python SqlAlchemy動(dòng)態(tài)添加數(shù)據(jù)表字段實(shí)例解析的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專(zhuān)題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
Python實(shí)現(xiàn)的登錄驗(yàn)證系統(tǒng)完整案例【基于搭建的MVC框架】
這篇文章主要介紹了Python實(shí)現(xiàn)的登錄驗(yàn)證系統(tǒng),結(jié)合完整實(shí)例形式分析了Python基于搭建的MVC框架進(jìn)行登錄驗(yàn)證操作的相關(guān)實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下2019-04-04python模擬新浪微博登陸功能(新浪微博爬蟲(chóng))
使用Python編寫(xiě)一個(gè)模擬登陸的程序,利用這個(gè)原來(lái)可以設(shè)計(jì)自己的爬蟲(chóng),大家參考使用吧2013-12-12Python錯(cuò)誤: SyntaxError: Non-ASCII character解決辦法
這篇文章主要介紹了Python錯(cuò)誤: SyntaxError: Non-ASCII character解決辦法的相關(guān)資料,需要的朋友可以參考下2017-06-06PyCharm License Activation激活碼失效問(wèn)題的解決方法(圖文詳解)
這篇文章主要介紹了PyCharm License Activation激活碼失效問(wèn)題的解決方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03解決json中ensure_ascii=False的問(wèn)題
這篇文章主要介紹了解決json中ensure_ascii=False的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04Pytorch生成隨機(jī)數(shù)Tensor的方法匯總
這篇文章主要介紹了Pytorch生成隨機(jī)數(shù)Tensor的方法匯總,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Python中使用pprint函數(shù)進(jìn)行格式化輸出的教程
這篇文章主要介紹了Python中使用pprint函數(shù)進(jìn)行格式化輸出的教程,包括能夠控制輸出寬度等非常有用的特性,需要的朋友可以參考下2015-04-04python實(shí)現(xiàn)監(jiān)控阿里云賬戶余額功能
這篇文章主要介紹了python實(shí)現(xiàn)監(jiān)控阿里云賬戶余額功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12