はじめに
SQL Alchemyで複合ユニーク制約の設定を確認しようとしてexecute('SHOW CREATE TABLE テーブル名')したところ1000 characters truncated
と表示され、結果が全文表示されなかったので回避策を書いておきます
結論
# 前略
result = session.execite('SHOW CREATE TABLE テーブル名')
for row in result:
for r in row:
print(r)
truncatedされるコード
最初は以下のように書いていました。
result = session.execite('SHOW CREATE TABLE テーブル名')
for row in result:
print(row)
ここでprint結果は以下のようになり、characters truncatedされて全文が見れない状態でした。
CREATE TABLE <テーブル名> (\n `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',\n `カラム1` varchar(8) NOT NULL COMMENT 'カラム2',\ ... (1000 characters truncated) ...
rowの型を確認したところ、sqlalchemy.engine.row.Rowというクラスのようでした。
The .Row object seeks to act as much like a Python named tuple as possible.
と記載されていたので、「タプルで入っているということはfor文で取り出せばいいのでは?」という安直な発想で試してみたところ、うまくいきました!
以下のような感じでprintされました。
<テーブル名>
CREATE TABLE `<テーブル名>` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`カラム1` varchar(8) NOT NULL COMMENT 'カラム1',
`カラム2` date NOT NULL COMMENT 'カラム2',
`カラム3` date NOT NULL DEFAULT '9999-12-31' COMMENT 'カラム3',
... 中略 ...
`最後のカラム` varchar(30) DEFAULT NULL COMMENT '最後のカラム',
PRIMARY KEY (`id`),
UNIQUE KEY `<テーブル名>_uniq1` (`カラム1`,`カラム2`),
KEY `<テーブル名>_idx1` (`カラム1`)
) ENGINE=...
COMMENT='コメント'
目的だった複合ユニーク制約の設定も確認できたので、めでたしめでたし