Python SqlAlchemy動態新增資料表欄位
SqlAlchemy版本:1.2
作業系統:Windows
Python:3.5
歡迎加入學習交流QQ群:657341423
我們知道使用SqlAlchemy建立類來對映資料表,類屬性等於資料庫欄位,但有時候要在我們建立表的時候,不確定資料表欄位數量,遇到這種情況,應如何解決?
先看常規用法
from sqlalchemy import create_engine,Column,String,Integer
class Mybase(Base):
#表名
__tablename__ ='mycars'
#欄位,屬性
myid=Column(String(50), primary_key=True)
price=Column(String(50))
上述程式碼是建立mycars資料表,欄位分別為myid和price,欄位數量是固定,那麼要實現動態建立數量不明確的欄位,程式碼如下:
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)
# 動態新增欄位
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)
# 新增資料
dt=table_class(Col1='aaa',Col2="aaa")
session.add(dt)
session.commit()
上述程式碼可看出,通過使用setattr()來實現動態新增欄位,而且欄位名可根據實際命名,comment是欄位註釋,這個只有SqlAlchemy 1.2版本才有的功能
(SqlAlchemy 1.2 安裝 :pip install --pre sqlalchemy)
執行結果:
當然,在插入資料和查詢資料的時候,會出現無法確定程式碼中對應欄位的屬性。可以使用SqlAlchemy執行sql實現插入
相關文章
- 動態為10g資料庫的表新增欄位,到256個欄位,hung住了?資料庫
- 如何在水晶報表中動態新增欄位
- Mybatis框架:foreach迴圈遍歷欄位(為了解決動態表、動態欄位查詢資料)MyBatis框架
- SQL新增表欄位SQL
- 如何較方便給上百張資料庫表新增表欄位資料庫
- EF Core3.1 CodeFirst動態自動新增表和欄位的描述資訊
- mybatis動態呼叫表名和欄位名MyBatis
- go語言將表資料動態轉成切片(欄位任意擴充)Go
- 位運算-設計資料庫表的多選狀態欄位資料庫
- 給mybatis新增自動建表,自動加欄位的功能MyBatis
- postgresql分割槽表修改資料表欄位SQL
- MySQL之資料庫和表的基本操作(建立表、刪除表、向表中新增欄位)MySql資料庫
- 不改表結構如何動態擴充套件欄位套件
- Laravel nova 建立動態資源配置欄位Laravel
- 資料庫表欄位命名規範資料庫
- oracle大表新增欄位default經驗分享Oracle
- Mysql資料庫建立儲存過程實現往資料表中新增欄位的方法MySql資料庫儲存過程
- 動態給表新增刪除欄位並同時修改它的插入更新儲存過程儲存過程
- ABAP 動態備份自建表資料到新表(自建表有資料的情況下要改欄位長度或者其他)
- 動態規劃最大欄位和動態規劃
- JavaScript動態向表格新增資料JavaScript
- mysql 資料庫 表 欄位 編碼修改 方法MySql資料庫
- mysql建立表的時候對欄位和表新增COMMENTMySql
- 在資料庫表中加一個狀態欄位可以代替軟刪除嗎?資料庫
- 【小知識】程式碼優化-動態新增大量擴充套件欄位優化套件
- 觸發器—一個表插入資料時其他欄位同步自增長欄位觸發器
- oracle刪除表欄位和oracle表增加欄位Oracle
- hive將查詢資料插入表中某欄位無資料Hive
- Oracle 11g 向表中大欄位插入資料Oracle
- Oracle-不刪表資料,修改欄位型別Oracle型別
- 【轉】修改表的欄位資料型別的方法資料型別
- Oracle-欄位的新增Oracle
- Oracle 動態效能表 v$session & v$process各個欄位的說明OracleSession
- 模型資料追加欄位模型
- 欄位管理,為什麼只有新增的時候才自動匹配欄位型別型別
- oracle中判斷欄位是否存在和新增表結構Oracle
- Log4Net 新增自定義欄位並儲存到資料庫資料庫
- ASP獲取資料庫表名,欄位名以及對欄位的一些操作 (轉)資料庫