pyodbc 中的错误:'pyodbc.Cursor' 对象没有属性 'commit'
Error in pyodbc: 'pyodbc.Cursor' object has no attribute 'commit'
我想使用 pyodbc
和 freetds
从 Python 连接到 SQL SERVER
数据库。
我的连接正常。
我的代码:
class GetSystems(Resource):
def get(self):
try:
cur = Connection.conn.cursor()
cur.execute(
"SELECT id,systemName,SystemDescription FROM MEFSystem")
rows = cur.fetchall()
objects_list = []
for row in rows:
d = collections.OrderedDict()
d['id'] = row[0]
d['systemName'] = row[1]
d['systemDescription'] = row[2]
objects_list.append(d)
logger.info(objects_list)
cur.commit()
cur.close()
logger.info(objects_list)
except Exception as inst:
cur.rollback()
cur.close()
print type(inst)
print inst.args
print inst
logger.error(type(inst))
logger.error(inst.args)
logger.error(inst)
return objects_list
这会在 cur.commit()
中产生错误:pyodbc.Cursor object has no attribute 'commit'
和 returns 未知数据:
[
{
"id": 2,
"systemDescription": "",
"systemName": "\uda00\udc53\ud940\udc41"
},
{
"id": 3,
"systemDescription": "",
"systemName": "\uda00\udc53\ud800\udc47"
},
{
"id": 4,
"systemDescription": "",
"systemName": "\ud900\udc52\ud8c0\udc4e\ud880\udc41"
}
]
数据应该是:
[
{
"id": 2,
"systemDescription": "",
"systemName": "SIAF"
},
{
"id": 3,
"systemDescription": "",
"systemName": "SIGA"
},
{
"id": 4,
"systemDescription": "",
"systemName": "RENTAS"
}
]
更新
我评论了提交,但 return 数据库中的数据未知。看 => "systemName": "\uda00\udc53\ud940\udc41", 应该是 "systemName": "SIGA"
不知道你是怎么得到这些奇怪的值的,会不会是编码问题?
查看您的数据(查看粗体数据):
\uda00\udc53\ud940\udc41 - 应该是 SIAF,粗体数据是 [=36 的 ascii =] 和 "A"
\uda00\udc53\ud800\udc47 - 应该是 SIGA,粗体数据是 [=36 的 ascii =], "G"
\ud900\udc52\ud8c0\udc4e\ud880\udc41 - RENTAS,粗体为 "R"、"N"、"A"
所以您似乎选择了正确的数据,但并未以有意义的方式传达给您。
不知道为什么,只是分享观察...
问题的解决方法是pyodbc的版本,从这个link下载pyodbc并安装。
谢谢!!!
我想使用 pyodbc
和 freetds
从 Python 连接到 SQL SERVER
数据库。
我的连接正常。
我的代码:
class GetSystems(Resource):
def get(self):
try:
cur = Connection.conn.cursor()
cur.execute(
"SELECT id,systemName,SystemDescription FROM MEFSystem")
rows = cur.fetchall()
objects_list = []
for row in rows:
d = collections.OrderedDict()
d['id'] = row[0]
d['systemName'] = row[1]
d['systemDescription'] = row[2]
objects_list.append(d)
logger.info(objects_list)
cur.commit()
cur.close()
logger.info(objects_list)
except Exception as inst:
cur.rollback()
cur.close()
print type(inst)
print inst.args
print inst
logger.error(type(inst))
logger.error(inst.args)
logger.error(inst)
return objects_list
这会在 cur.commit()
中产生错误:pyodbc.Cursor object has no attribute 'commit'
和 returns 未知数据:
[
{
"id": 2,
"systemDescription": "",
"systemName": "\uda00\udc53\ud940\udc41"
},
{
"id": 3,
"systemDescription": "",
"systemName": "\uda00\udc53\ud800\udc47"
},
{
"id": 4,
"systemDescription": "",
"systemName": "\ud900\udc52\ud8c0\udc4e\ud880\udc41"
}
]
数据应该是:
[
{
"id": 2,
"systemDescription": "",
"systemName": "SIAF"
},
{
"id": 3,
"systemDescription": "",
"systemName": "SIGA"
},
{
"id": 4,
"systemDescription": "",
"systemName": "RENTAS"
}
]
更新
我评论了提交,但 return 数据库中的数据未知。看 => "systemName": "\uda00\udc53\ud940\udc41", 应该是 "systemName": "SIGA"
不知道你是怎么得到这些奇怪的值的,会不会是编码问题? 查看您的数据(查看粗体数据):
\uda00\udc53\ud940\udc41 - 应该是 SIAF,粗体数据是 [=36 的 ascii =] 和 "A"
\uda00\udc53\ud800\udc47 - 应该是 SIGA,粗体数据是 [=36 的 ascii =], "G"
\ud900\udc52\ud8c0\udc4e\ud880\udc41 - RENTAS,粗体为 "R"、"N"、"A"
所以您似乎选择了正确的数据,但并未以有意义的方式传达给您。
不知道为什么,只是分享观察...
问题的解决方法是pyodbc的版本,从这个link下载pyodbc并安装。
谢谢!!!