Python SqlAlchemy動態(tài)添加數(shù)據(jù)表字段實例解析
本文研究的主要是Python SqlAlchemy動態(tài)添加數(shù)據(jù)表字段,具體如下。
我們知道使用SqlAlchemy創(chuàng)建類來映射數(shù)據(jù)表,類屬性等于數(shù)據(jù)庫字段,但有時候要在我們創(chuàng)建表的時候,不確定數(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ù)量是固定,那么要實現(xiàn)動態(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()
#定義類
class table_class(Base):
__tablename__ = 'aaa'
id=Column(Integer,primary_key=True)
# 動態(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()
上述代碼可看出,通過使用setattr()來實現(xiàn)動態(tài)添加字段,而且字段名可根據(jù)實際命名,comment是字段注釋,這個只有SqlAlchemy 1.2版本才有的功能 (SqlAlchemy 1.2 安裝 :pip install –pre sqlalchemy)
運行結(jié)果:

當(dāng)然,在插入數(shù)據(jù)和查詢數(shù)據(jù)的時候,會出現(xiàn)無法確定代碼中對應(yīng)字段的屬性??梢允褂肧qlAlchemy執(zhí)行sql實現(xiàn)插入
總結(jié)
以上就是本文關(guān)于Python SqlAlchemy動態(tài)添加數(shù)據(jù)表字段實例解析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關(guān)文章
Python Pyqt5多線程更新UI代碼實例(防止界面卡死)
這篇文章通過代碼實例給大家介紹了Python Pyqt5多線程更新UI防止界面卡死的問題,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2021-12-12
Django執(zhí)行源生mysql語句實現(xiàn)過程解析
這篇文章主要介紹了Django執(zhí)行源生mysql語句實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11
python通過floor函數(shù)舍棄小數(shù)位的方法
這篇文章主要介紹了python通過floor函數(shù)舍棄小數(shù)位的方法,實例分析了Python中floor函數(shù)的功能及使用技巧,需要的朋友可以參考下2015-03-03
Python?中將數(shù)字轉(zhuǎn)換為字母的方法
本文詳細(xì)介紹了在 Python 中將數(shù)字轉(zhuǎn)換為字母的幾種常用方法,我們介紹了使用 chr() 函數(shù)、string 模塊和 ord() 函數(shù)等方法,并提供了示例代碼幫助你理解和應(yīng)用這些方法,感興趣的朋友跟隨小編一起看看吧2023-06-06
Python通過RabbitMQ服務(wù)器實現(xiàn)交換機(jī)功能的實例教程
RabbitMQ是一個基于消息隊列的服務(wù)器程序,Python可以通過Pika庫來驅(qū)動它,這里我們將來看一個Python通過RabbitMQ服務(wù)器實現(xiàn)交換機(jī)功能的實例教程:2016-06-06

