2015-08-20 64 views
2

我在寫一個使用pymssql模塊連接到MSSQL DB的腳本。 我找不到使連接方法使用變量工作的方法。使用變量的Python pymssql連接字符串

這工作:

a = pymssql.connect(host='sqlserver', port=3183,user='admin',password='pass',database='master') 

這不(B1-5是變量):

a = pymssql.connect(b1,b2,b3 b4,b5) 
(Like shown in first example in www.pymssql.org/en/latest/pymssql_examples.html) 

我得到這個錯誤:

File "pymssql.pyx", line 636 in pymssql. connect (pymssql. c:10178) pymssql.OperationalError: (20009, 'DB-Lib error message 20009,severity 9:\nUnable to connect: Adaptive Server is unavailable or does not exist\nNet-Lib error during Unknown error (10035)\n')

該數據庫是罰款,我可以手動登錄和文字連接字符串的作品。 我的變量(b1-5)不包含單引號和雙引號。 當我使用單引號我越來越

Connection to database failed for an unknown reason.

你有一個想法,可能是什麼問題呢?

回答

2

你應該寫:

a = pymssql.connect(host=b1, port=b2,user=b3,password=b4,database=b5) 

B1實際上是一臺主機,B2是一個港口,等等...

+0

這實際上是我嘗試的第一件事。得到了與我提到的第一個相同的錯誤。 –

+0

我看通過pymssql手冊,端口變量應該是字符串,是你的情況下字符串? – svfat

+0

是。但是,再次,沒有任何形式的引用。 –

-3

像這樣就行了!

cf=ConfigParser.ConfigParser() 
 
cf.read("conf.ini") 
 
DATABASE=cf.get("app_info","DATABASE") 
 
USER=cf.get("app_info","USER") 
 
PASSWORD=cf.get("app_info","PASSWORD") 
 
HOST=cf.get("app_info","HOST") 
 
PORT=cf.get("app_info","PORT") 
 
#HOST = '127.0.0.1' 
 
USER = 'test' 
 
PASSWORD = 'test' 
 
#DATABASE = 'test' 
 
PORT='1433' 
 
HOST1 = '127.0.0.1' 
 
USER1 = 'test' 
 
PASSWORD1 = 'test' 
 
#DATABASE1 = 'test' 
 
PORT1=PORT 
 
HOST1 = HOST 
 
USER1 = USER 
 
PASSWORD1 =PASSWORD 
 
DATABASE1 = DATABASE 
 
PORT1=PORT 
 

 

 
g_Conn = None 
 
def mssql(sql): 
 
try: 
 
    conn=pymssql.connect(host=HOST1,user=USER1,password=PASSWORD1,database=DATABASE1,port=PORT1) 
 
    cur = conn.cursor() 
 
    cur.execute(sql) 
 
    rows = cur.fetchall() 
 
    conn.commit() 
 
    cur.close() 
 
    conn.close() 
 
    return rows 
 
except pymssql.Error,e: 
 
    print "Mysql Error %d: %s" % (e.args[0], e.args[1])

尋找了很久!顯式調用它

找半天!顯式的調用下就可以了 
+0

雖然這確實嘗試回答這個問題,代碼被破壞了,我非常懷疑你有任何輸出。爲了:(1)不需要讀取配置文件,然後對設置進行硬編碼(2),不需要將這些硬編碼設置複製到另一組變量中(3)您的縮進在「 mssql'(4)你甚至不稱這個函數! –