Автоматически создавать таблицу базы данных на основе класса с помощью SQLAlchemyPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Автоматически создавать таблицу базы данных на основе класса с помощью SQLAlchemy

Сообщение Anonymous »

Я новичок в SQLAlchemy, и мне это нравится. Сейчас я многое делаю вручную и хочу, чтобы все было более «питонично» и динамично.

В качестве примера у меня есть короткий скрипт, который вручную создает/определяет таблицу, а затем функцию, которая вставляет данные в эту таблицу.

подключение к базе данных

Код: Выделить всё

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. Может ли кто-нибудь подсказать мне хороший учебник или справочник, в котором можно описать этот процесс?

Подробнее здесь: https://stackoverflow.com/questions/165 ... sqlalchemy
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»