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 相关文章推荐
Django1.7+python 2.78+pycharm配置mysql数据库教程
Nov 18 Python
Python map和reduce函数用法示例
Feb 26 Python
Python实现从订阅源下载图片的方法
Mar 11 Python
python3获取两个日期之间所有日期,以及比较大小的实例
Apr 08 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
May 30 Python
Django ORM 查询管理器源码解析
Aug 05 Python
python基础 range的用法解析
Aug 23 Python
pyftplib中文乱码问题解决方案
Jan 11 Python
如何理解Python中包的引入
May 29 Python
Selenium alert 弹窗处理的示例代码
Aug 06 Python
python全栈开发语法总结
Nov 22 Python
利用Python判断整数是否是回文数的3种方法总结
Jul 07 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
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
2013/06/17 PHP
php防止SQL注入详解及防范
2013/11/12 PHP
PHP判断数据库中的记录是否存在的方法
2014/11/14 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
js获取指定的cookie的具体实现
2014/02/20 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
2014/05/14 Javascript
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
2015/06/10 Javascript
详解AngularJS中自定义指令的使用
2015/06/17 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
2016/05/31 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
JavaScrpt判断一个数是否是质数的实例代码
2017/06/11 Javascript
jQuery实现左右滑动的toggle方法
2018/03/03 jQuery
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
js实现倒计时器自定义时间和暂停
2019/02/25 Javascript
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
对pandas的dataframe绘图并保存的实现方法
2017/08/05 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
pytorch 预训练层的使用方法
2019/08/20 Python
python根据文本生成词云图代码实例
2019/11/15 Python
基于Python爬取51cto博客页面信息过程解析
2020/08/25 Python
美国艺术和工艺品商店:Hobby Lobby
2020/12/09 全球购物
工程造价专业大学生自荐信
2013/10/01 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
纪念九一八事变83周年国旗下讲话稿
2014/09/15 职场文书
迁户口计划生育证明
2014/10/19 职场文书
银行稽核岗位职责
2015/04/13 职场文书
酒会开场白大全
2015/06/01 职场文书
归途列车观后感
2015/06/17 职场文书
2015年汽车销售员工作总结
2015/07/24 职场文书