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装饰器 免去调用父类构造函数的麻烦
May 18 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
Oct 14 Python
python实现简单名片管理系统
Nov 30 Python
对python周期性定时器的示例详解
Feb 19 Python
详解Python使用Plotly绘图工具,绘制甘特图
Apr 02 Python
Python实现平行坐标图的两种方法小结
Jul 04 Python
Python 字符串类型列表转换成真正列表类型过程解析
Aug 26 Python
pymysql 开启调试模式的实现
Sep 24 Python
Python hashlib常见摘要算法详解
Jan 13 Python
tensorflow常用函数API介绍
Apr 19 Python
python模拟实现分发扑克牌
Apr 22 Python
python 最简单的实现适配器设计模式的示例
Jun 30 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 中include()与require()的对比
2006/10/09 PHP
PHP 采集程序中常用的函数
2009/12/09 PHP
php实现文件下载(支持中文文名)
2013/12/04 PHP
PHP迭代器和生成器用法实例分析
2019/09/28 PHP
使用prototype.js 的时候应该特别注意的几个问题.
2007/04/12 Javascript
Javascript实现动态菜单添加的实例代码
2013/07/05 Javascript
Javascript alert消息换行的方法
2013/08/07 Javascript
js如何实现淡入淡出效果
2020/11/18 Javascript
jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
2016/05/27 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
2016/08/08 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
2017/11/24 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
2017/12/27 Javascript
基于angular6.0实现的一个组件懒加载功能示例
2018/04/12 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
2019/05/14 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
[01:03:00]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第一局
2016/02/25 DOTA
[34:39]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第二局
2016/03/05 DOTA
介绍Python中内置的itertools模块
2015/04/29 Python
python好玩的项目—色情图片识别代码分享
2017/11/07 Python
Python 利用内置set函数对字符串和列表进行去重的方法
2018/06/29 Python
python使用minimax算法实现五子棋
2019/07/29 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
Python pytesseract验证码识别库用法解析
2020/06/29 Python
浅析python 字典嵌套
2020/09/29 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
详解Css3新特性应用之过渡与动画
2017/01/10 HTML / CSS
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
Bealls Florida百货商店:生活服饰、家居装饰和鞋子
2018/02/23 全球购物
英国高街电视:High Street TV
2018/05/22 全球购物
仲裁协议书
2014/09/26 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
python实现简单的名片管理系统
2021/04/26 Python
分享python函数常见关键字
2022/04/26 Python