通过 SQL 查询 (SQL x Python) 描述表时出现问题



我正在看一本书,现在的目标是编写一些Python代码来与日志表进行交互。到目前为止,我已经成功地定义了数据库的连接特征,导入了驱动程序模块,创建了一个连接对象,并创建了一个游标。(顺便说一下,我正在使用 IDLE(

>>> dbconfig = { 'host': '127.0.0.1',
'user' : 'vsearch',
'password' : 'vsearchpasswd',
'database' : 'vsearchlogDB', }
>>> import mysql.connector
>>> conn = mysql.connector.connect(**dbconfig)
>>> cursor = conn.cursor()
>>> _SQL = """show tables"""
>>> cursor.execute(_SQL)
>>> res = cursor.fetchall()
>>> res
[('log',)]

但是当我最终想要描述日志表时会发生错误。

>>> _SQL = """descibe log"""
>>> cursor.execute(_SQL)
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
cursor.execute(_SQL)
File "C:UsersAdminAppDataLocalProgramsPythonPython38-32libsite-packagesmysqlconnectorcursor.py", line 569, in execute
self._handle_result(self._connection.cmd_query(stmt))
File "C:UsersAdminAppDataLocalProgramsPythonPython38-32libsite-packagesmysqlconnectorconnection.py", line 598, in cmd_query
result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
File "C:UsersAdminAppDataLocalProgramsPythonPython38-32libsite-packagesmysqlconnectorconnection.py", line 486, in _handle_result
raise errors.get_exception(packet)
mysql.connector.errors.ProgrammingError: 1064 (42000): 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 'descibe log' at line 1
>>> res = cursor.fetchall()
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
res = cursor.fetchall()
File "C:UsersAdminAppDataLocalProgramsPythonPython38-32libsite-packagesmysqlconnectorcursor.py", line 895, in fetchall
raise errors.InterfaceError("No result set to fetch from.")
mysql.connector.errors.InterfaceError: No result set to fetch from.
>>>

根据这本书,这应该会发生。相反,我收到一个错误。

>>> _SQL = """describe log"""
>>> cursor.execute(_SQL)
>>> res = cursor.fetchall()
>>> res
[('id', 'int(11)', 'NO', 'PRI', None, 'auto_increment'), ('ts',
'timestamp', 'NO', '', 'CURRENT_TIMESTAMP', ''), ('phrase',
'varchar(128)', 'NO', '', None, ''), ('letters', 'varchar(32)',
'NO', '', None, ''), ('ip', 'varchar(16)', 'NO', '', None, ''),
('browser_string', 'varchar(256)', 'NO', '', None, ''), ('results',
'varchar(64)', 'NO', '', None, '')]
>>> for row in res:
print(row)
('id', 'int(11)', 'NO', 'PRI', None, 'auto_increment')
('ts', 'timestamp', 'NO', '', 'CURRENT_TIMESTAMP', '')
('phrase', 'varchar(128)', 'NO', '', None, '')
('letters', 'varchar(32)', 'NO', '', None, '')
('ip', 'varchar(16)', 'NO', '', None, '')
('browser_string', 'varchar(256)', 'NO', '', None, '')
('results', 'varchar(64)', 'NO', '', None, '')

您的陈述中似乎有错别字。更改拼写错误。

_SQL = """describe log"""

最新更新