私はこの警告を受け取り続け、それを取り除くことができないように見えても(それを抑制する以外に):
C:\...\site-packages\sqlalchemy\sql\elements.py:4390: SAWarning:
Textual column expression 'column_name' should be explicitly declared
with text('column_name'), or use column('column_name') for more
specificity
if guess_is_literal else "column"
あるメタデータコンテキストでColumn()オブジェクト(列名+データ型)のリストを作成し、後で別のメタデータコンテキストでこのリストを使用してテーブルを作成します。これは機能しますが、この警告が表示されます。私はもう試した:
何があっても、警告が表示されます。
Pythonコードのスニペットは次のとおりです。
for col_name in self.cols_source:
print(meta.tables[self.table_name].c[col_name].name)
print(type(meta.tables[self.table_name].c[col_name].name)) #quotedname
print(type(column(meta.tables[self.table_name].c[col_name].name))) #ColumnClause
print(type(text(meta.tables[self.table_name].c[col_name].name))) #TextClause
print(type(str(meta.tables[self.table_name].c[col_name].name))) #Str
#source_query_cols.append( Column( name=meta.tables[self.table_name].c[col_name].name, type_=meta.tables[self.table_name].c[col_name].type ))
#source_query_cols.append( Column( name=column(meta.tables[self.table_name].c[col_name].name), type_=meta.tables[self.table_name].c[col_name].type ))
#source_query_cols.append( Column( name=text(meta.tables[self.table_name].c[col_name].name), type_=meta.tables[self.table_name].c[col_name].type ))
source_query_cols.append( Column( name=str(meta.tables[self.table_name].c[col_name].name), type_=meta.tables[self.table_name].c[col_name].type ))
エラーの説明に従って、テキストにキャストする必要があります。これを行うには、次のコードをニーズに適合させます:)
from sqlalchemy.sql import text
...
cursor.execute(text(<whatever_needed_to_be_casted>))