mysql數據庫在程序中執行sql語句時,或者在執行sql時,數據庫表可能會有一些特殊的字符,比如說#,.等,這樣在執行時
可能會遇到問題 如以下的表名,backup_2014.2.22, 這個表在查詢時會有問題 因為存在這個.的緣故,會報錯 table_name=“backup_2014.2.22" 如python中寫self.db.query("show create table %s" % table_name)[0]會報錯 (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.22' at line 1”) Traceback (most recent call last): File "/Users/xuxiaodong/work/db_table_to_Wiki.py", line 120, in <module> main(sys.argv) File "/Users/xuxiaodong/work/db_table_to_Wiki.py", line 117, in main db.get_db_tables_to_wiki() File "/Users/xuxiaodong/work/db_table_to_Wiki.py", line 31, in get_db_tables_to_wiki create_table = self.db.query("show create table %s" % table_name)[0] TypeError: 'NoneType' object has no attribute ‘__getitem__' 從報的錯誤來看是因為sql語句的語法錯誤,而原因就是將帶有特殊字符的表名直接作為字符串進行sql時會有語法錯誤 而在sql語句中字段和表名應該是有`table`,這兩個符號來包括,就可以了 self.db.query("show create table `%s" % table_name + "`”) 這是sql語句中的標准寫法,養成這個習慣比較好