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 itertools模块详解
May 09 Python
python之virtualenv的简单使用方法(必看篇)
Nov 25 Python
TensorFlow实现创建分类器
Feb 06 Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
Mar 15 Python
基于循环神经网络(RNN)实现影评情感分类
Mar 26 Python
Python获取网段内ping通IP的方法
Jan 31 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
Jun 13 Python
python格式化输出保留2位小数的实现方法
Jul 02 Python
Python列表元素常见操作简单示例
Oct 25 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 Python
python 实现两个线程交替执行
May 02 Python
详解Python牛顿插值法
May 11 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设计模式之结构模式的深入解析
2013/06/13 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
2014/06/22 PHP
Prototype使用指南之dom.js
2007/01/10 Javascript
JavaScript入门教程(2) JS基础知识
2009/01/31 Javascript
Javascript继承(上)——对象构建介绍
2012/11/08 Javascript
js判断undefined类型示例代码
2014/02/10 Javascript
js中的如何定位固定层的位置
2014/06/15 Javascript
Javascript判断文件是否存在(客户端/服务器端)
2014/09/16 Javascript
浅谈js键盘事件全面控制
2016/12/01 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
2017/02/13 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
2017/02/20 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
基于JavaScript实现的插入排序算法分析
2017/04/14 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
2018/02/13 jQuery
webpack vue项目开发环境局域网访问方法
2018/03/20 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
2019/04/30 Javascript
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
[01:10:03]OG vs EG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
基于Python 中函数的 收集参数 机制
2019/12/21 Python
Pyspark获取并处理RDD数据代码实例
2020/03/27 Python
Python代码需要缩进吗
2020/07/01 Python
python 实现IP子网计算
2021/02/18 Python
html5指南-2.如何操作document metadata
2013/01/07 HTML / CSS
澳洲健康食品网上商店:Aussie Health Products
2018/06/15 全球购物
Dr. Martens马汀博士澳大利亚官网:马丁靴鼻祖
2019/07/02 全球购物
Linux上比较文件的命令都有哪些
2013/09/28 面试题
打架检讨书100字
2014/01/19 职场文书
揠苗助长教学反思
2014/02/04 职场文书
高中生评语大全
2014/04/25 职场文书
停电通知范文
2015/04/16 职场文书
基层党建工作简报
2015/07/21 职场文书
MySQL系列之十 MySQL事务隔离实现并发控制
2021/07/02 MySQL
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers