【问题标题】:Make clean output in pyodbc using python and ms-access使用 python 和 ms-access 在 pyodbc 中生成干净的输出
【发布时间】:2014-06-25 13:02:04
【问题描述】:

我制作了从 ms-access 数据库中获取记录的插件,并将其放入 QT 作为推荐,但是当我运行它时,它有 strage 输出,如下所示:

(u'Ini Bessel dengan Bessel', )

我想要的输出是这样的:

Ini Bessel dengan Bessel(没有括号和 'u' 的干净输出)

这是用于制作该插件的代码:

from PyQt4 import QtCore, QtGui
from ui_testdbase import Ui_TestDbase
import pyodbc

class TestDbaseDialog(QtGui.QDialog):
    def __init__(self):
        QtGui.QDialog.__init__(self)
        # Set up the user interface from Designer.
        self.ui = Ui_TestDbase()
        self.ui.setupUi(self)

        Rec_1 = self.ui.btnOke
        QtCore.QObject.connect(Rec_1, QtCore.SIGNAL('clicked()'),self.Compskala)

    def query_odbc(self, sqlquery):

        db = 'd:/_tmp/Assessment.mdb'

        constr = 'Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=' + db
        conn = pyodbc.connect(constr, autocommit=True)
        cur = conn.cursor()

        cur.execute(sqlquery)
        t = list(cur)
        conn.commit()
        conn.close()
        return str(t).strip('[]')        


    def Compskala(self):

        skal1 = self.ui.lineSkal1.text()
        skal2 = self.ui.lineSkal2.text()
        bandskal = ''
        if skal1 in ['WGS84'] and skal2 in ['WGS84'] :      
            bandskal = self.query_odbc('''SELECT rekomendasi FROM datum where datum1 = 'wgs84' AND datum2 = 'wgs84';''')
        elif skal1 in ['DGN95'] and skal2 in ['WGS84'] :
            bandskal = self.query_odbc('''SELECT rekomendasi FROM datum where datum1 = 'wgs84' AND datum2 = 'dgn95';''')
        elif skal1 in ['bessel'] and skal2 in ['bessel'] :
            bandskal = self.query_odbc('''SELECT rekomendasi FROM datum where datum1 = 'bessel' AND datum2 = 'bessel';''')
        else:
            bandskal = 'Karena perbedaan skala dasar Peta tidak dapat dipadukan'

        self.ui.textBrow1.setPlainText(bandskal)

谁能帮我解决这个问题?

谢谢

【问题讨论】:

    标签: qt python-2.7 ms-access-2007 output pyodbc


    【解决方案1】:
    t = list(cur)
    

    当转换为字符串时,str(t) 变为

    [(u'Ini Bessel dengan Bessel', )]
    

    而不是试图使用“蛮力”来去除无关的字符...

    return str(t).strip('[]')
    

    ...也许您可以从列表中提取字符串。如果您想要的只是列表(光标)中第一行的第一列,那么请尝试使用

    return t[0][0]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-26
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      相关资源
      最近更新 更多