0
0

SQL AlchemyでSHOW CREATE TABLEの結果がcharacters truncatedされる

Posted at

はじめに

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='コメント'

目的だった複合ユニーク制約の設定も確認できたので、めでたしめでたし

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0