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的几种开发工具介绍
Mar 07 Python
python实现图片批量剪切示例
Mar 25 Python
python实现下载指定网址所有图片的方法
Aug 08 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
Aug 03 Python
python利用小波分析进行特征提取的实例
Jan 09 Python
对python 中class与变量的使用方法详解
Jun 26 Python
Python3+Appium实现多台移动设备操作的方法
Jul 05 Python
pandas中的series数据类型详解
Jul 06 Python
Python如何实现动态数组
Nov 02 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
Feb 06 Python
python目标检测给图画框,bbox画到图上并保存案例
Mar 10 Python
python实现逢七拍腿小游戏的思路详解
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
使用adodb lite解决问题
2006/12/31 PHP
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
2009/07/01 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
2015/04/21 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
Sample script that deletes a SQL Server database
2007/06/16 Javascript
jQuery选择头像并实时显示的代码
2010/06/27 Javascript
在JavaScript中获取请求的URL参数[正则]
2010/12/25 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
js传值后台中文出现乱码的解决方法
2016/06/30 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
JavaScript 总结几个提高性能知识点(推荐)
2017/02/20 Javascript
Angular.JS去掉访问路径URL中的#号详解
2017/03/30 Javascript
VueJS组件之间通过props交互及验证的方式
2017/09/04 Javascript
Three.js基础学习教程
2017/11/16 Javascript
浅谈React前后端同构防止重复渲染
2018/01/05 Javascript
vue2.0 axios跨域并渲染的问题解决方法
2018/03/08 Javascript
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
jQuery实现王者荣耀手风琴效果
2020/01/17 jQuery
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
2020/06/11 Javascript
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
[02:57]DOTA2亚洲邀请赛 SECRET战队出场宣传片
2015/02/07 DOTA
python函数形参用法实例分析
2015/08/04 Python
Python中内置的日志模块logging用法详解
2016/07/12 Python
python字符串过滤性能比较5种方法
2017/06/22 Python
python使用Flask操作mysql实现登录功能
2018/05/14 Python
python实现简单tftp(基于udp协议)
2018/07/30 Python
Python 下载及安装详细步骤
2019/11/04 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
Python通过Schema实现数据验证方式
2020/11/12 Python
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
澳大利亚的奢侈品牌:Oroton
2016/08/26 全球购物
The Outnet亚太地区:折扣设计师时装店
2019/12/05 全球购物
七年级生物教学反思
2014/01/30 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
河童之夏观后感
2015/06/11 职场文书
Python中的 No Module named ***问题及解决
2022/07/23 Python