2012-08-30 34 views
0

我正在使用PyQT4 + PostgreSQL 9.1制作用户管理系统。在写入用于建立与数据库连接的下面的代码,我得到语法错误: -连接字符串不适用于Python 2.7和PostgreSQL 9.1

from PyQt4 import QtSql, QtGui , QtCore 
import _sha256 
import psycopg2 


def createConnection(): 

    QSqlDatabase db = QSqlDatabase.addDatabase("QPSQL"); 
    db.setDatabaseName("mysite"); 
    db.setUserName("postgres"); 
    db.setPassword("password"); 
    db.setHostName("localhost"); 
    bool ok = db.open(); 
    if not db.open(): 
     QtGui.QMessageBox.critical(None, QtGui.qApp.tr("Cannot open database"), 
       QtGui.qApp.tr("Unable to establish a database connection.\n" 
           "This example needs PostgreSQL support."), 
       QtGui.QMessageBox.Cancel) 
     return False 

    query = QtSql.QSqlQuery() 
    query.exec_("create table usermanagement(ID int primary key," 
       "userid int,firstname varchar(20), lastname varchar(20),usertype varchar(15),password varchar(20),)") 
    query.exec_("insert into usermanagement values(1, 'Danny','Boyle','normaluser','normaluser')") 

    return True 

该错误消息如下: -

QSqlDatabase分贝= QSqlDatabase.addDatabase( “QPSQL”); ^ 语法错误:无效语法

回答

1

您不能在Python中声明变量类型;一个类名,后跟一个空格,后跟一个变量名,不是Python语法。

只是做db = QSqlDatabase.addDatabase("QPSQL")

(你必须要在bool ok = ...同样的问题)

你的代码还没有定义QSqlDatabase任何地方开始;大概你的意思是从某个地方导入它。

也从您的代码中删除所有的分号;它们在Python中不是必需的语句终止符,并且被认为是不好的风格。

+0

在做出上述更改后,我没有收到任何错误。但是,当我运行python文件时,表格并未在PostgreSQL中创建。 – Chetan

+0

分贝= QtSql.QSqlDatabase.addDatabase( “QPSQL”) db.setDatabaseName( “mysite的”) db.setUserName( “postgres的”) db.setPassword( “密码”) db.setHostName( “本地主机”) ok = db.open() – Chetan