我正在研究一个简单的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()
答案 0 :(得分:1)
您使用过:
from __future__ import print_function
位于模块顶部。此禁用该模块的print
语句,因此您可以改为使用print()
function:
print(id)
从功能文档:
注意:此功能通常不作为内置功能使用,因为名称
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)