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设计模式之观察者模式实例
Apr 26 Python
闭包在python中的应用之translate和maketrans用法详解
Aug 27 Python
python数据结构之链表的实例讲解
Jul 25 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
Mar 22 Python
PyQt5每天必学之切换按钮
Aug 20 Python
Python简单实现网页内容抓取功能示例
Jun 07 Python
用python标准库difflib比较两份文件的异同详解
Nov 16 Python
在Python中通过getattr获取对象引用的方法
Jan 21 Python
在python中,使用scatter绘制散点图的实例
Jul 03 Python
Django实现celery定时任务过程解析
Apr 21 Python
pandas dataframe 中的explode函数用法详解
May 18 Python
Django分页器的用法你都了解吗
May 26 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/01/06 PHP
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
xml 封装与解析(javascript和C#中)
2009/07/26 Javascript
jquery 与NVelocity 产生冲突的解决方法
2011/06/13 Javascript
JQuery中form验证出错信息的查看方法
2013/10/08 Javascript
jQuery中fadeOut()方法用法实例
2014/12/24 Javascript
JS实现两表格里数据来回转移的方法
2015/05/28 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
2015/12/13 Javascript
javascript事件绑定学习要点
2016/03/09 Javascript
JS实现的系统调色板完整实例
2016/12/21 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
用Vue.extend构建消息提示组件的方法实例
2017/08/08 Javascript
基于js的变量提升和函数提升(详解)
2017/09/17 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
2018/07/13 Javascript
详解Vue组件插槽的使用以及调用组件内的方法
2018/11/13 Javascript
用原生 JS 实现 innerHTML 功能实例详解
2019/04/03 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
2020/08/17 Javascript
JS实现小米轮播图
2020/09/21 Javascript
[48:48]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
MySQLdb ImportError: libmysqlclient.so.18解决方法
2014/08/21 Python
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
Python实现的简单计算器功能详解
2018/08/25 Python
Python实现微信消息防撤回功能的实例代码
2019/04/29 Python
Python Selenium安装及环境配置的实现
2020/03/17 Python
Jupyter notebook 启动闪退问题的解决
2020/04/13 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
简单了解如何封装自己的Python包
2020/07/08 Python
Python开发.exe小工具的详细步骤
2021/01/27 Python
CSS3简单实现照片墙
2014/12/12 HTML / CSS
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
俄罗斯运动鞋商店:Sneakerhead
2018/05/10 全球购物
教师自我剖析材料
2014/09/29 职场文书
网吧温馨提示
2015/07/17 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python