我有找到一篇寫到,當傳入變數且是用 cursor.execute 執行時,所傳入的變數會被當成是字串,
所以才會造成無法達到 select 所應得到的資料。
不知照我上面貼的程式碼可有解法?

我也承認我也不懂,所以亂搞卡著頭痛

有試著改變成傳兩個變數進去:
def DB_return
2(exec_cmd
,Gname):
connection = mysqldb.connect('localhost', 'ocs', 'passwd', 'ocsdb',charset='utf8');
with connection:
cursor = connection.cursor()
cursor.execute(exec_cmd
,Gname)
rows_info = cursor.fetchall()
return rows_info
.........................................
.........................................
省略
connection = mysqldb.connect('localhost', 'ocs', 'passwd', 'ocsdb',charset='utf8');
with connection:
cursor = connection.cursor()
cursor.execute("SELECT * FROM accountinfo")
numrows = int(cursor.rowcount)
for i in range(numrows):
row = cursor.fetchone()
GsheetName = row[1] ////抓出使用者 TAG 名稱指定給 GsheetName 使用者變數
rows_accest = DB_return
2("SELECT DISTINCT \
A.HARDWARE_ID,A.TAG,H.NAME,H.PROCESSORT,H.MEMORY,S.DISKSIZE,M.CAPTION,SF.NAME \
from accountinfo as A \
join hardware as H \
join monitors as M \
join storages as S \
join softwares as SF \
where \
A.HARDWARE_ID=H.ID \
and A.HARDWARE_ID=S.HARDWARE_ID \
and S.TYPE='Fixed hard disk media' \
and A.HARDWARE_ID=M.HARDWARE_ID \
and A.HARDWARE_ID=SF.HARDWARE_ID \
and A.HARDWARE_ID=H.ID \
and SF.NAME not like '%Hotfix%' \
and SF.NAME not like '%Update%' \
and A.TAG like"
, GsheetName)
結果變成下列的錯誤訊息:
[root@ocs ~]# python OcsAssetUpGoogleExcel2.py
Traceback (most recent call last):
File "OcsAssetUpGoogleExcel2.py", line 149, in <module>
and A.TAG like",GsheetName)
File "OcsAssetUpGoogleExcel2.py", line 21, in DB_return2
cursor.execute(exec_cmd, Gname)
File "/usr/lib64/python2.7/site-packages/MySQLdb/cursors.py", line 187, in execute
query = query % tuple([db.literal(item) for item in args])
ValueError: unsupported format character 'H' (0x48) at index 397