AttributeError: объект «NoneType» не имеет атрибута «GetDataStore»
Я, ребята, я разрабатываю утилиту в python, и у меня есть 2 объекта – основной класс и помощник базы данных для получения данных sqlserver.
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', 'P1lim07181702', '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]);
Моя проблема в том, когда я пытаюсь запустить код, верните мне эту ошибку
Traceback (most recent call last): File "C:\Projectos\FrameworkGAE\src\gaemodel.py", line 28, in <module> main(sys.argv[1:]) File "C:\Projectos\FrameworkGAE\src\gaemodel.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'
Что не так ??
- Есть ли функция или метод Python, который отображает спецификации объекта?
- Высоко масштабируемые теги в Google App Engine (Python)
- GAE – Ошибка развертывания: «AttributeError: невозможно установить атрибут»
- Как обращаться с исключениями BigTable Scan InvalidChunk?
- Python – лучший способ выделить строку с булевым выражением
Прежде всего:
- Метод
__new__
следует называть__init__
. - Удалите глобальную строку _host и т. Д.
Затем измените метод __init__
:
self.host = host self.userid = userid etc.
И измените GetDataStore
:
conn = _mssql.connect(server=self.host, user=self.userid, etc.)
Это должно делать свое дело.
Я предлагаю вам немного прочитать объектно-ориентированный Python.
Посмотрите, что должен делать __new__
и какие аргументы он должен иметь. Я думаю, вы хотели использовать __init__
а не __new__
. Причиной вашей конкретной ошибки является то, что _db
– None
.
Я думаю, вы хотите изменить database.py следующим образом:
import _mssql class sqlserver(object): def __init__ (self, host, userid, pwd, database): self.host = host self.userid = userid self.pwd = pwd self.db = database def GetDataStore(self, sql): conn = _mssql.connect(server=self.host, user=self.userid, password=self.pwd, database=self.db) 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')")
- Обновить заполненные NULL строки для столбца на основе совпадающих значений других столбцов в других строках
- Как создать тестовые данные для моего сценария Python?
- Когда «повысить класс, экземпляр» полезно?
- Что такое termios.TIOCGWINSZ
- Хотя однострочный контур цикла
- В чем разница между «с открытыми (…)» и «с закрытием (open (…))»
- Являются ли файлы Python 2.5 .pyc совместимыми с файлами Python 2.6 .pyc?
- Печать текстового дерева в python
- Ошибка импорта caffe
- python – метод вызова вызова с использованием __func__
- Подсчитать количество воскресенья в текущем месяце