Проход по столбцам - ядро ​​SQLAlchemy - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь перебрать столбцы всех таблиц в моей базе данных, чтобы выбрать пустые столбцы.Наконец я использовал raw sql и .format, чтобы заставить его работать, но как мне использовать SQLAlchemy для достижения того же результата?Вот код, который я написал:

from sqlalchemy import MetaData, create_engine, select
from sqlalchemy.sql import func

engine = create_engine('...')
conn = engine.connect()                                                                                                                                                                                 

tablemeta = MetaData(bind=engine, reflect=True)

for t in tablemeta.sorted_tables:
    for col in t.c:                                                                                                                                                                                       
        s = select([func.count(t.c[str(col)].distinct())])                                                                                                                                                
        s = s.scalar()                                                                                                                                                                                    
        if s <= 1:                                                                                                                                                                                        
            print(s)                                                                                                                                                                                      

Но это приводит к KeyError.

1 Ответ

0 голосов
/ 05 декабря 2018

ОК, я получил его на работу:

for t in tablemeta.sorted_tables:
    for col in t.c:                                                                                                                                                                                       
        s = select([func.count(t.c[col.name].distinct())])                                                                                                                                                
        s = s.scalar()                                                                                                                                                                                    
        if s <= 1:                                                                                                                                                                                        
            print(s)                                                                                                                                                                                      
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...