這程式是用來產生gsoap的程式,輸入網址和要命名的名稱,就會產生出gsoap c++的檔案,再把檔案放到專案上編譯即可:
import os
strURL = raw_input("tell me the url ")
strHeadFileName = raw_input("tell me the head file ")
# 記得要把路徑改掉
strImportDir = "C:\\gsoap-2.7\\gSOAP\\import\\"
strExeDir = "C:\\gsoap-2.7\\gsoap\\bin\\win32\\"
strURL += "?wsdl"
strExeNameList = ["" , ""]
strParamList = ["" , ""]
strExeNameList[0] = strExeDir + "wsdl2h.exe"
strExeNameList[1] = strExeDir + "soapcpp2.exe"
strParamList[0] = "-N" + strHeadFileName + " -o" + strHeadFileName + ".h" + " " + strURL
strParamList[1] = "-C -w -x -I" + strImportDir + " " + strHeadFileName+ ".h"
iLen = len(strExeNameList)
for i in range(iLen):
strCmd = strExeNameList[i] + " " + strParamList[i]
print strCmd
os.system( strCmd )
再來這程式就是MySQL轉SQLite了,要安裝MySQLdb這模組,sqlite3在python 2.5以上都是內建的,還有,我只轉換一個table而已,有需要的就自行增加,編碼也要注意,我之前沒注意到,搞得轉出來的中文字都變亂碼..OTL:# -*- coding: utf-8 -*-
import sys,os
import string
import MySQLdb
import sqlite3 as sqlite
# change to match your mysql server account:
bibusdb = "ec_scenic_db"
mysqlhost = "localhost"
mysqluser = "root"
mysqlpasswd = "97381687"
# output SQLite file:
destfile = "ec_scenic_db.db"
# Create Table
SqliteTabs = """
BEGIN TRANSACTION;
DROP TABLE IF EXISTS "admin_title";
CREATE TABLE admin_title ( ID INTEGER NOT NULL primary key autoincrement,ATID VARCHAR(10) default NULL COLLATE SQLITE_UTF8,ATname VARCHAR(10) default NULL COLLATE SQLITE_UTF8,ATstatus VARCHAR(1) default NULL COLLATE SQLITE_UTF8);
COMMIT;
"""
print "connecting to MySQL db..."
try:
conn1 = MySQLdb.connect(host = mysqlhost,user =mysqluser,passwd = mysqlpasswd,db = bibusdb,use_unicode=True,charset="utf8")
except MySQLdb.Error, e:
print "Error %d: %s" % (e.args[0], e.args[1])
sys.exit (1)
c1 = conn1.cursor()
c1.execute ("USE " + bibusdb)
print "connecting to SQlite db..."
conn2 = sqlite.connect(destfile)
c2 = conn2.cursor()
c2.executescript(SqliteTabs)
# Insert Data
print "querying admin_title table..."
c1.execute("SELECT * FROM admin_title ORDER BY ID")
res = c1.fetchall()
print "copying admin_title table..."
query = u"INSERT INTO admin_title VALUES("
for x in res[0] :
query = query + '?,'
query = query[0:-1] + ')'
for src in res :
try:
c2.execute(query,src)
except:
print "Error: " + query
break
print "commiting changes...."
#close connection:
c1.close()
conn1.close()
conn2.commit()
c2.close()
conn2.close()
還有個重點,當使用Mobile模擬器裝置時,若你用SQlite讀取的db檔不是存放在模擬器內部,只要你想要對此db做更新或修改的話,就會出現Disk I/O Error的錯誤訊息!
0 意見:
張貼留言