2015-01-04 37 views
0

我有兩個腳本main.py和testscript.py。在main.py上是連接到我的數據庫和testscript.py的函數,我將使用它作爲查詢請求,並使用main.py將此查詢調用到我的數據庫中。添加到在main.py使用兩個腳本的python數據庫查詢

if __name__ == '__main__': 
     q = "select domain_name from domains_domain limit 10" 
     query(q) 

和運行腳本

python main.py

工作如預期,但我不知道如何做到這一點的testscript.py

這裏是main.py

import MySQLdb 
from localdb import * 
import socket 

host = socket.gethostname() 
error_report = "Check if MySQL service is running and user name/password are correct" 

class WeekQuery: 
    def __init__(self, name): 
     self.name = name 

    def query(self): 
     cursor = None 
     results = None 
     week_number = None 
     #Connecting to production database 
     if host == 'db01': 
      try: 
       db = MySQLdb.connect("db01", "myuser", "mypass", "mydb") 
       cursor = db.cursor() 
       cursor.callproc(self) 
       results = cursor.fetchall() 
       week_number = [i[0] for i in cursor.description] 
      except MySQLdb.Error, e: 
       try: 
        print "%s \n MySQL Error [%d]: %s" % (error_report, e.args[0], e.args[1]) 
       except IndexError: 
        print "%s \n MySQL Error: %s " % (error_report, str(e)) 
     else: 

      #local database rename localdb.py_example to localdb.py 
      try: 
       db = MySQLdb.connect(host=MYSQL_HOST, user=MYSQL_USER, passwd=MYSQL_PASSWD, db=MYSQL_DATABASE) 
       cursor = db.cursor() 
       cursor.execute(self) 
       results = cursor.fetchall() 
       week_number = [i[0] for i in cursor.description] 
      except MySQLdb.Error, e: 
       try: 
        print "%s \n MySQL Error [%d]: %s" % (error_report, e.args[0], e.args[1]) 
       except IndexError: 
        print "%s \n MySQL Error: %s " % (error_report, str(e)) 

      #finally: 
      # cursor.close() 
      # db.close() 
      print(results, week_number) #For debuging only 
     return (results, week_number) 

這裏我testscript.py

from main import WeekQuery 

def sample(): 
    q = "select domain_name from domains_domain limit 10" 
    x = WeekQuery(q) 
    for y in x.query(): 
     print(y) 
+0

是什麼問題?如果需要,可以在WeekQuery類中定義默認查詢。 – Ashalynd 2015-01-04 11:16:52

+0

問題是,蟒蛇sampletest.py返回一個錯誤: '回溯(最近通話最後一個): 文件 「script.py」,第11行, 樣品() 文件 「script.py」 中,第7行,在樣本 for y in x.query(): 文件「/home/robert/projects/python/scripts/example_tests/db_query_function/main.py」,第36行,在查詢中 cursor.execute(self)' – Robert 2015-01-04 11:40:55

+0

是所有錯誤文本? – Ashalynd 2015-01-04 12:04:11

回答

1

您還需要tom從main導入主機和error_report。這是你的問題嗎?

+0

不,沒有問題,在samplescript.py我想把查詢和該查詢用於main.py作爲'自我',並給我結果 – Robert 2015-01-04 12:28:52

+0

好吧,所以你有一個處理對象和字段的問題。例如,你可以在你的WeekQuery類中添加aq字段,將相應的參數添加到__init__方法中,並且應該可以工作 – 2015-01-04 13:19:22

+0

我已經添加了'class WeekQuery: q =「select domain_name from domains_domain limit 10」012 ____init __(self,q ): self.q = q' 但'蟒蛇sampletest.py'給我'回溯(最近通話最後一個): 文件 「sampletest.py」,9號線, 樣品中() 文件「sampletest。 py「,第4行,樣本 x = WeekQuery(q) NameError:全局名稱'q'未定義' – Robert 2015-01-04 14:31:31