python动态生成数据库表_基于SQLAlchemy类自动生成数据库表

我对SQLAlchemy很陌生,我喜欢它。现在我正在做很多手工的事情,我想做的事情更'Python'和动态。

因此作为一个例子,我有一个简短的脚本,它手动创建/定义一个表,然后是一个函数,将数据插入到该表中。

数据库连接import os

from sqlalchemy import *

from sqlalchemy import schema, types

from sqlalchemy.ext.declarative import declarative_base

db_url = os.environ.get('DATABASE_URL')

engine = create_engine(db_url)

Base = declarative_base(engine)

meta = Base.metadata

表格定义file_paths = Table('file_paths', meta,

Column('table_id', Integer, primary_key = True),

Column('fullpath', String(255)),

Column('filename', String(255)),

Column('extension', String(255)),

Column('created', String(255)),

Column('modified', String(255)),

Column('size', Integer),

Column('owner', String(255)),

Column('permissions', Integer),

mysql_engine='InnoDB',

)

file_paths.drop(engine, checkfirst = False)

file_paths.create(engine, checkfirst = True)

插入函数将字符串和列表作为参数def push_to_db(fullpath, fileInfo):

i = file_paths.insert()

i.execute( fullpath = str(fullpath),

filename = str(fileInfo[0]),

extension = str(fileInfo[1]),

created = str(fileInfo[2]),

modified = str(fileInfo[3]),

size = str(fileInfo[4]),

owner = str(fileInfo[5]),

permissions = str(fileInfo[6]),

)

这是可行的,但它是丑陋的,并采取了一个教程,我发现在网上某处。我的目标是使这些行动充满活力。

示例类class FileMeta(object):

def __init__(self, fullPathFileName, filename):

self.fullPathFileName = fullPathFileName

self.filename = filename

self.extension = os.path.splitext(self.filename)[1].lower()

...

def fileMetaList(self):

return [self.filename, self.extension, self.created, self.modified,\

self.size, self.owner, self.permissions]

下面是一个场景:给定一个类对象根据类成员变量动态定义表

列号和列名应与变量名相对应

或对应于类变量列表中该变量的索引

编写一个函数,可以将类中的数据插入到相应的动态创建的表中

我的直觉告诉我,这就是SQLAlchemy的好处所在。有人能告诉我一个好的教程或参考资料,可以概述这个过程吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值