I guys, I developing a utility in python and i have 2 object the main class and an database helper for get sqlserver data.
database.py
import _mssql class sqlserver(object): global _host, _userid, _pwd, _db def __new__ (self, host, userid, pwd, database): _host = host _userid = userid _pwd = pwd _db = database def GetDataStore(self, sql): conn = _mssql.connect(server='(local)\sqlexpress', user='sa', password='xxx', database='Framework.Data2') conn.execute_non_query('CREATE TABLE persons(id INT, name VARCHAR(100))') conn.execute_non_query("INSERT INTO persons VALUES(1, 'John Doe')") conn.execute_non_query("INSERT INTO persons VALUES(2, 'Jane Doe')")
gaemodel.py
import os import sys from fwk import system, types, databases class helper(object): pass def usage(app_name): return "Usage: %s <project name>" % (app_name) def main(argv): _io = system.io() project_name = argv[1] project_home = os.path.join(_io.CurrentDir(), project_name) _db = databases.sqlserver('(local)sqlexpress', 'sa', 'xxx', 'Framework.Data2') _db.GetDataStore("select name from sysobjects where xtype = 'U' and name not like 'Meta%'") str = "from google.appengine.ext import db" #for row in cur: # str += "class %s" % row["name"] print cur if __name__ == "__main__": if len(sys.argv) > 1: main(sys.argv[1:]) else: print usage(sys.argv[0]);
My problem is when i try run code return me this error
Traceback (most recent call last): File "C:ProjectosFrameworkGAEsrcgaemodel.py", line 28, in <module> main(sys.argv[1:]) File "C:ProjectosFrameworkGAEsrcgaemodel.py", line 18, in main _ db. GetDataStore("select name from sysobjects where xtype = 'U' and name not like 'Meta%'") AttributeError: 'NoneType' object has no attribute 'GetDataStore'
What is wrong ??
Advertisement
Answer
First of all:
- The
__new__
method should be named__init__
. - Remove the global _host etc. line
Then change the __init__
method:
self.host = host self.userid = userid etc.
And change GetDataStore
:
conn = _mssql.connect(server=self.host, user=self.userid, etc.)
That should do the trick.
I suggest you read a bit on object-oriented Python.