Python SqlAlchemy动态添加数据表字段实例解析


Posted in Python onFebruary 07, 2018

本文研究的主要是Python SqlAlchemy动态添加数据表字段,具体如下。

我们知道使用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)

运行结果:

Python SqlAlchemy动态添加数据表字段实例解析

当然,在插入数据和查询数据的时候,会出现无法确定代码中对应字段的属性。可以使用SqlAlchemy执行sql实现插入

总结

以上就是本文关于Python SqlAlchemy动态添加数据表字段实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
python调用fortran模块
Apr 08 Python
Python正则抓取网易新闻的方法示例
Apr 21 Python
深入理解Django的自定义过滤器
Oct 17 Python
python中实现数组和列表读取一列的方法
Apr 03 Python
pandas DataFrame数据转为list的方法
Apr 11 Python
使用python PIL库实现简单验证码的去噪方法步骤
May 10 Python
jupyter notebook 中输出pyecharts图实例
Apr 23 Python
Python在Matplotlib图中显示中文字体的操作方法
Jul 29 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
May 15 Python
python如何处理程序无法打开
Jun 16 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
Dec 13 Python
FP-growth算法发现频繁项集——构建FP树
Jun 24 Python
Python实现抢购IPhone手机
Feb 07 #Python
浅谈python可视化包Bokeh
Feb 07 #Python
详解tensorflow训练自己的数据集实现CNN图像分类
Feb 07 #Python
全面分析Python的优点和缺点
Feb 07 #Python
Tensorflow环境搭建的方法步骤
Feb 07 #Python
Python pandas常用函数详解
Feb 07 #Python
详解python字节码
Feb 07 #Python
You might like
php压缩多个CSS为一个css的代码并缓存
2011/04/21 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
2013/06/20 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
基于jQuery的获取标签名的代码
2012/07/16 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
2014/04/25 Javascript
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
2014/07/15 NodeJs
详解AngularJS中的表格使用
2015/06/16 Javascript
原生javascript+css3编写的3D魔方动画旋扭特效
2016/03/14 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
AngularJS基础 ng-dblclick 指令用法
2016/08/01 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
vue注册组件的几种方式总结
2018/03/08 Javascript
vue全局使用axios的方法实例详解
2018/11/22 Javascript
vue.js高德地图实现热点图代码实例
2019/04/18 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
JS实现音量控制拖动
2020/01/15 Javascript
微信小程序实现电子签名并导出图片
2020/05/27 Javascript
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
简单介绍Python下自己编写web框架的一些要点
2015/04/29 Python
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
python 3.6.7实现端口扫描器
2019/09/04 Python
Python如何向SQLServer存储二进制图片
2020/06/08 Python
python3.7.3版本和django2.2.3版本是否可以兼容
2020/09/01 Python
Internal修饰符有什么含义
2013/07/10 面试题
sealed修饰符是干什么的
2012/10/23 面试题
Linux中如何用命令创建目录
2016/12/02 面试题
幼儿教师自我鉴定
2013/11/02 职场文书
广告传媒专业应届生求职信
2014/03/01 职场文书
浪费资源的建议书
2014/03/12 职场文书
基层党组织整改方案
2014/10/25 职场文书
结婚喜宴迎宾词
2015/08/10 职场文书
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL