當在python中使用sqlite3模塊時,cursor.description的所有元素(列名除外)都設置爲None,因此不能使用此元組來查找查詢結果的列類型(與其他DB -API兼容模塊)。獲得列的類型的唯一方法是使用pragma table_info(table_name).fetchall()
獲取表的描述,將其存儲在內存中,然後將cursor.description的列名與整個表的描述進行匹配?sqlite3和cursor.description
5
A
回答
5
不,它不是唯一的方法。或者,您也可以獲取一行,遍歷它,並檢查單個列的Python對象和類型。除非值爲無(在這種情況下,SQL字段爲NULL),否則這應該能夠非常準確地指示數據庫列類型是什麼。
sqlite3僅在一個地方使用sqlite3_column_decltype
和sqlite3_column_type
,而且兩者都不可用於Python應用程序 - 因此它們不是您可能一直在尋找的「直接」方式。
1
我沒有在Python嘗試這樣做,但你可以嘗試像
SELECT *
FROM sqlite_master
WHERE type = 'table';
其中包含了DDL創建一個用來創建表的語句東西。通過解析DDL,您可以獲得列類型信息,例如它。請記住,就列數據類型而言,SQLITE相當模糊且不受限制。
相關問題
- 1. JPA和sqlite3的 -
- 2. SQLite3和Alter表..
- 3. Sqlite3和Xcode
- 4. wxPython - ListCrtl和SQLite3
- 5. JRuby和SQLite3的
- 6. NSDate和SQLite3
- 7. SQLite3和System.currentTimeMillis()
- 8. uitextview和sqlite3
- 9. sqlite3的和last_insert_rowid
- 10. SQLite3,MATCH和OR
- 11. Shell腳本和sqlite3
- 12. 支持sqlite和sqlite3
- 13. sqlite-net和sqlite3.dll
- 14. SQLite3 FTS4,MATCH和Android
- 15. rowid在SQLITE3和Android
- 16. Apache和Sqlite3問題
- 17. 與Python和sqlite3的
- 18. SQLite3和多處理
- 19. Rails和SQLITE3問題
- 20. cursor.description中「類型代碼」對應於數據庫字段類型
- 21. sqlalchemy on raw sql。我如何訪問底層的cursor.description?
- 22. Python數據庫API cursor.description中不會包括表名
- 23. 如何使用sqlite3和Python
- 24. php5 sqlite3結果和免費
- 25. SQlite3和數據庫創建
- 26. SQLite3和隱式rowid的
- 27. SQLite3,PDO,Active Record和CodeIgniter
- 28. Rails中的Mysql2和Sqlite3
- 29. sqlite3.InterfaceError和查詢錯誤
- 30. FactoryGirl Rspec的和的SQLite3 :: ConstraintException