几乎完全相同的打印命令无法编译

时间:2014-10-30 10:02:47

标签: python

我正在研究一个简单的python脚本,用于从mysql数据库中检索信息。 这是我的两个几乎是IDENTICAL的例子,第一个成功编译而第二个返回:

      File "dbconnection.py", line 17
    print ip
           ^
SyntaxError: invalid syntax

我尝试删除第二个示例中的try catch代码但没有结果。 有一个相关的帖子on syntax error on Python 3使我的第二个例子成功运行,但它没有回答“为什么这些几乎相同的例子有不同的行为”的问题。

第一个例子:

import datetime
import mysql.connector

cnx = mysql.connector.connect(user='user', database='test', password='test')
cursor = cnx.cursor()

query = ("SELECT ip FROM guralps")
cursor.execute(query)

for (ip) in cursor:
  print ip

cursor.close()
cnx.close()

第二个不编译:

from __future__ import print_function
from datetime import date, datetime, timedelta
import mysql.connector
from mysql.connector import errorcode
import time


try:

  cnx = mysql.connector.connect(user='user', database='test', password='test')
  cursor = cnx.cursor()

  query = ("SELECT ip FROM guralps")
  cursor.execute(query)

  for (ip) in cursor:
    print ip

  cursor.close()
  cnx.close()

except mysql.connector.Error as err:
  if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
    print("Something is wrong with your user name or password")
  elif err.errno == errorcode.ER_BAD_DB_ERROR:
    print("Database does not exists")
  else:
    print(err)
else:
  cnx.close()

2 个答案:

答案 0 :(得分:1)

您使用过:

from __future__ import print_function

位于模块顶部。此禁用该模块的print语句,因此您可以改为使用print() function

print(id)

从功能文档:

  

注意:此功能通常不作为内置功能使用,因为名称print被识别为print语句。要禁用该语句并使用print()函数,请在模块顶部使用以后的语句:

from __future__ import print_function

答案 1 :(得分:-1)

来自 future import print_function,除法需要Python 2.6或更高版本。 print_function 将允许您将print用作功能。因此,您无法将其用作 print ip

>>> from __future__ import print_function
>>>print('# of entries', len(dictionary), file=sys.stderr)