Detalles de la columna en sqlite3

En la base de datos SQLITE, si necesito detalles de metadatos de tabla, puedo ejecutar el siguiente comando

C:\sqlite>sqlite3.exe sqlite2.db SQLite version 3.7.15 2012-12-12 13:36:53 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> PRAGMA table_info(forum_forum); 0|id|integer|1||1 1|category_id|integer|0||0 2|name|varchar(100)|1||0 3|description|varchar(200)|1||0 4|locked|bool|1||0 

Quiero hacer cosas similares en sqlalchemy . ¿Alguien puede decirme cómo hacer esto?

Solución

 from sqlalchemy import * from sqlalchemy.orm import sessionmaker db_target = create_engine('sqlite:///C:\\Users\\asit\\workspace\\forum1\\src\\sqlite.db') session = sessionmaker(db_target, autocommit = True)() rs = session.execute("PRAGMA table_info(forum_forum)") for row in rs: print '%s %s %s %s %s' % (row['cid'], row['name'], row['type'], row['notnull'], row['pk']) 

Salida: –

 0 id integer 1 1 1 category_id integer 0 0 2 name varchar(100) 1 0 3 description varchar(200) 1 0 4 locked bool 1 0 

Puedes obtener muchos detalles de la siguiente manera.

 from sqlalchemy import * db_target = create_engine('sqlite:///C:\\Users\\asit\\workspace\\forum1\\src\\sqlite.db') target_metadata = MetaData(db_target) src_master_table = Table('forum_forum', src_metadata, autoload=True ) print src_master_table.columns._data 

Puede ejecutar sentencias SQL arbitrarias con session.execute() , incluida esa sentencia pragma.

La PRAGMA table_info(forum_forum) devuelve una secuencia de filas:

 >>> res = session.execute("PRAGMA table_info(forum_forum)") >>> res.keys() [u'cid', u'name', u'type', u'notnull', u'dflt_value', u'pk'] >>> for row in res: ...   print row ... (0, u'id', u'integer', 0, None, 1) (1, u'category_id', u'integer', 0, None, 0) (2, u'name', u'varchar(100)', 1, None, 0) (3, u'description', u'varchar(200)', 1, None, 0) (4, u'locked', u'bool', 1, None, 0)