pyodbc 中的错误:'pyodbc.Cursor' 对象没有属性 'commit'

Error in pyodbc: 'pyodbc.Cursor' object has no attribute 'commit'

我想使用 pyodbcfreetds 从 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并安装。

谢谢!!!