pythoncapi
❶ GBase 8a支持連接C語言嗎
您是想問GBase8a支持連接CAPI嗎?支持。GBase8a資料庫支持ODBC、JDBC、ADO.NET等介面規范;支持CAPI、pythonAPI等介面。GBase8a介面驅動可以有效實現對上層應用請求的負載進行均衡,應用調用介面驅動配置多個集群節點的IP,介面驅動的內部進行連接的負載均衡。
❷ 如何搭建flask環境
安裝了 python2.7.3 ,放在 d:\Python27\python ,並且創建了g:\microblog, 下載了 virtualenv.py並放在g:\microblog
cd g:\microblog,
g:\microblog>d:\Python27\python virtualenv.py flask
Overwriting flask\lib\orig-prefix.txt with new content
New python executable in flask\Scripts\python.exe
Traceback (most recent call last):
File "g:\microblog\flask\lib\site.py", line 67, in <mole>
import os
File "g:\microblog\flask\lib\os.py", line 397
yield from walk(new_path, topdown, onerror, followlinks)
^
SyntaxError: invalid syntax
ERROR: The executable flask\Scripts\python.exe is not functioning
ERROR: It thinks sys.prefix is u'g:\\microblog' (should be u'g:\\microblog\\flas
k')
ERROR: virtualenv is not compatible with this system or executable
Note: some Windows users have reported this error when they installed Python for
"Only this user" or have multiple versions of Python installed. Copying the app
ropriate PythonXX.dll to the virtualenv Scripts/ directory may fix this problem.
dir D:\Python27\DLLs
Directory of D:\Python27\DLLs
08/18/2014 09:36 AM <DIR> .
08/18/2014 09:36 AM <DIR> ..
04/10/2012 11:31 PM 59,904 bz2.pyd
03/08/2011 09:39 AM 19,790 py.ico
03/08/2011 09:39 AM 19,790 pyc.ico
04/10/2012 11:31 PM 103,424 pyexpat.pyd
04/10/2012 11:31 PM 9,728 select.pyd
04/10/2012 11:31 PM 337,920 sqlite3.dll
08/28/2010 02:42 PM 867,840 tcl85.dll
08/28/2010 02:42 PM 8,192 tclpip85.dll
08/28/2010 02:45 PM 1,320,448 tk85.dll
04/10/2012 11:31 PM 686,592 unicodedata.pyd
04/10/2012 11:31 PM 8,704 winsound.pyd
04/10/2012 11:32 PM 877,056 _bsddb.pyd
04/10/2012 11:31 PM 74,240 _ctypes.pyd
04/10/2012 11:31 PM 13,824 _ctypes_test.pyd
04/10/2012 11:31 PM 70,656 _elementtree.pyd
04/10/2012 11:31 PM 285,184 _hashlib.pyd
04/10/2012 11:31 PM 46,080 _msi.pyd
04/10/2012 11:31 PM 23,552 _multiprocessing.pyd
04/10/2012 11:31 PM 40,960 _socket.pyd
04/10/2012 11:31 PM 41,984 _sqlite3.pyd
04/10/2012 11:31 PM 721,920 _ssl.pyd
04/10/2012 11:31 PM 29,184 _testcapi.pyd
04/10/2012 11:31 PM 30,208 _tkinter.pyd
23 File(s) 5,697,180 bytes
2 Dir(s) 5,159,092,224 bytes free
❸ 為什麼人工智慧用Python
這屬於一種誤解,人工智慧的核心演算法是完全依賴於C/C++的,因為是計算密集型,需要非常精細的優化,還需要GPU、專用硬體之類的介面,這些都只有C/C++能做到。所以某種意義上其實C/C++才是人工智慧領域最重要的語言。
Python是這些庫的API
binding,使用Python是因為CPython的膠水語言特性,要開發一個其他語言到C/C++的跨語言介面,Python是最容易的,比其他語言的ffi門檻要低不少,尤其是使用Cython的時候。其他語言的ffi許多都只能導入C的函數入口點,復雜的數據結構大多隻能手工用byte數組拼起來,如果還需要回調函數輸入那就無計可施了。而CPython的C
API是雙向融合的,可以直接對外暴露封裝過的Python對象,還可以允許用戶通過繼承這些自定義對象來引入新特性,甚至可以從C代碼當中再調用Python的函數(當然,也有一定的條件限制)。不過這也是PyPy這樣的JIT解釋器的一個障礙。
而且Python歷史上也一直都是科學計算和數據分析的重要工具,有numpy這樣的底子,因為行業近似所以選擇API
binding語言的時候會首選Python,同時復用numpy這樣的基礎庫既減少了開發工作量,也方便從業人員上手。
❹ python 判斷請求是pc端還是手機端
#判斷網站來自mobile還是pc
defcheckMobile(request):
"""
demo:
@app.route('/m')
defis_from_mobile():
ifcheckMobile(request):
return'mobile'
else:
return'pc'
:paramrequest:
:return:
"""
userAgent=request.headers['User-Agent']
#userAgent=env.get('HTTP_USER_AGENT')
_long_matches=r'googlebot-mobile|android|avantgo|blackberry|blazer|elaine|hiptop|ip(hone|od)|kindle|midp|mmp|mobile|o2|operamini|palm(os)?|pda|plucker|pocket|psp|smartphone|symbian|treo|up.(browser|link)|vodafone|wap|windowsce;(iemobile|ppc)|xiino|maemo|fennec'
_long_matches=re.compile(_long_matches,re.IGNORECASE)
_short_matches=r'1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|awa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r|s)|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1u|g560|gene|gf-5|g-mo|go(.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp(i|ip)|hs-c|ht(c(-||_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac(|-|/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(|/)|klon|kpt|kwc-|kyo(c|k)|le(no|xi)|lg(g|/(k|l|u)|50|54|e-|e/|-[a-w])|libw|lynx|m1-w|m3ga|m50/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-||o|v)|zz)|mt(50|p1|v)|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v)|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-|)|webc|whit|wi(g|nc|nw)|wmlb|wonu|x700|xda(-|2|g)|yas-|your|zeto|zte-'
_short_matches=re.compile(_short_matches,re.IGNORECASE)
if_long_matches.search(userAgent)!=None:
returnTrue
user_agent=userAgent[0:4]
if_short_matches.search(user_agent)!=None:
returnTrue
returnFalse
編譯sqlite
先去 http://www.sqlite.org/download.html 下載最新的sqlite源代碼,我這里用的是3.5.6版本的。
我推薦使用amalgamation版本的源代碼,這個代碼只有幾個文件而已,編譯起來方便,而且據說 編譯器好的話,還可能編譯出更高效的代碼。 我下載的是
[plain]
view plain
http://www.sqlite.org/sqlite-amalgamation-3.5.6.tar.gz
先運行以下幾步:
[plain]
view plain
tar zxf sqlite-amalgamation-3.5.6.tar.gz
cd sqlite-3.5.6
./configure --host=arm-linux --prefix=/usr/local/arm/3.3.2 --enable-shared --disable-readline --disable-dynamic-extensions
以上是把sqlite解壓縮,然後做一些配置,這里,我希望sqlite到時候安裝到/usr/local/arm/3.3.2里,要生成動態鏈接庫,不要readline,不要sqlite的動態擴展。
然後編輯Makefile,把CFLAG和CXXFLAG中的-g去掉,我們不用debug sqlite。
接下來就可以編譯和安裝sqlite了:
[plain]
view plain
make
make install
這一步就完成了sqlite的編譯和安裝了。
編譯python
先去http://www.python.org/download/下載最新版本的python源代碼,我這里下載的是:
[plain]
view plain
http://www.python.org/ftp/python/2.5.1/Python-2.5.1.tar.bz2
先把python解壓縮:
[plain]
view plain
tar jxf Python-2.5.1.tar.bz2
cd Python-2.5.1
編譯pc版本的語法解析器
由於在編譯python的時候,需要先編譯一個叫pgen的程序出來,用於生成語法解析器,所以我們要先生成一個pc版本的pgen:
[plain]
view plain
mkdir build.pc
cd build.pc
../configure
make Parser/pgen
然後ls Parser一下,應該就能看到有pgen了。
修改configure
configure在檢測編譯器的printf是否支持%zd的時候,如果發現是在cross compile,就直接不幹活了。這還了得?
把這一部分的檢測代碼去掉。這段代碼起始於
[plain]
view plain
echo "$as_me:$LINENO: checking for %zd printf() format support" >&5
echo $ECHO_N "checking for %zd printf() format support... $ECHO_C" >&6
if test "$cross_compiling" = yes; then
結束於
[plain]
view plain
cat >>confdefs.h <<\_ACEOF
#define PY_FORMAT_SIZE_T "z"
_ACEOF
else
echo "$as_me: program exited with status $ac_status" >&5
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6
fi
rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
把這兩段以及中間的內容都刪除掉就可以了。
編譯arm版本的python
有了語法解析器,就可以開始編譯arm版本的python了。
[plain]
view plain
mkdir ../build.arm
cd ../build.arm
../configure --prefix=/home/leojay/test/arm-system-working/rootfs --disable-ipv6 --host=arm-linux --enable-shared
先創建一個用於編譯的目錄build.arm,再對python做一些配置,如安裝目錄,不要ipv6,使用arm-linux的編譯器,生成動態鏈接庫。
修改Makefile
之後就要對Makefile做一些修改,把
[plain]
view plain
OPT= -DNDEBUG -g -O3 -Wall -Wstrict-prototypes
一行中,去掉-g,我們不要debug python,-O3改為-O2,空間緊張O2就可以了。
在
[plain]
view plain
PGEN= Parser/pgen$(EXE)
一行的下面加上
[plain]
view plain
PGEN_HOST= ../build.pc/Parser/pgen$(EXE)
表明我們在HOST上運行的pgen
在要使用PGEN的地方改為PGEN_HOST:
[plain]
view plain
$(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT)
-$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
改為:
[plain]
view plain
$(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT)
-$(PGEN_HOST) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
修改所有使用新生成的python的地方。
所有如 ./$(BUILDPYTHON) 的地方,都改為python
如:
[plain]
view plain
platform: $(BUILDPYTHON)
$(RUNSHARED) ./$(BUILDPYTHON) -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
改為
[plain]
view plain
platform: $(BUILDPYTHON)
$(RUNSHARED) python -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
這種地方比較多,大家小心修改。
修改setup.py
setup.py負責編譯python的各個擴展模塊。但是,由於python完全沒有考慮cross compile,所以要做一些修改。
PyBuildExt類:
函數的前兩行是把/usr/local加到搜索目錄中,我們的cross compiler一般不會直接安裝在 /usr/local裡面的,所以這兩行去掉:
[plain]
view plain
lib_dirs, inc_dirs的設定中,把中括弧里的那些都去掉。 以下所有模塊都不要:
這個函數在編譯了所有的extension後,會去load這些剛編譯好的extension, 但我們在i686的電腦上顯然不能load,所以要跳過這些操作。 在 build_ext.build_extension(self, ext)後面直接寫一個return,不做load。
for d in ['/usr/local/arm/3.3.2/include']
for d in inc_dirs + sqlite_inc_paths:
ssl, openssl, bdb, dbm, termios, nsl, ncurses, bz2, linuxaudiodev, ossaudiodev, tkinter
add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
build_extension函數:
detect_moles函數:
cmath, ctypes, _testcapi, pwd, grp, spwd, mmap, audioop, imageop, rgbimg, readline,
[plain]
view plain
由於python本身的問題,現在ctypes還不能在除i386以外的機器上運行,所以ctypes也去掉 編譯sqlite的地方:
[plain]
view plain
改為:
[plain]
view plain
因為我的sqlite3安裝在這里,如果這里不改的話,setup.py會在我的電腦上找sqlite
main函數:
setup函數調用的時候,把要安裝的scripts那一部分去掉
之後就可以make && make install了。
附上我修改後的 Makefile 和 setup.py 供大家參考
裁減python
python完全安裝後,實在是很大,所以,要把一些肯定用不上的庫去掉。 所以,再附上我的裁減腳本 cleanpy.sh
注意,由於我的python程序都運行在python -OO的參數下,所有的.py和.pyc都不需要, 只要有.pyo就可以了。所以,這個腳本會把所有的.py和.pyc都刪除掉。
大家可以根據自己的需要做調整。
你的
sqlite3資料庫是用
SEE
加密的嗎?
如果是了話,試一下通過python執行以下sqlite
pragma命令來提供解密key
PRAGMA key='your-secret-key';
根據
SEE的文檔,通過
PRAGMA
命令也可以提供解密key,而不需 sqlite3_key_v2()
這個C
API。你試一下。
❼ 現在AI很火,我到底該學Python還是C/C++
python目前比較火,c++的話比較多人用,不過你可以去招聘網站查看下要求,看看目前大眾選擇的哪款要求多來考慮學哪個。
❽ python好學嗎,人工智慧跟python有什麼關系
提到人工智慧就一定會提到Python,有的初學者甚至認為人工智慧和Python是劃等號的,其實Python是一種計算機程序設計語言。是一種動態的、面向對象的腳本語言,開始時是用於編寫自動化腳本(shell),隨著版本的不斷更新和語言新功能的添加,越來越多被用於獨立的、大型項目的開發。而人工智慧通俗講就是人為的通過嵌入式技術把程序寫入機器中使其實現智能化。顯然人工智慧和Python是兩個不同的概念。人工智慧和Python的淵源在於。就像我們統計數據或選擇用excel製作表格時,因為在需要用到加減乘除或者、函數等時,只需要套用公司就可以。因為SUM、AVERAGE等這樣的函數運行的背後,是C++/C#等語言已經編寫好了代碼,所以Excel只是工具和展現形式並不是它做計算。同理在學習人工智慧時Python只是用來操作深度學習框架的工具,實際負責運算的主要模塊並不依靠Python,真正起作用的是也是一大堆復雜的C++
/ CUDA程序。
深度學習人工智慧時,自己計算太復雜,還要寫C++代碼操作,這時程序員就想要不搞一套類似復雜的Excel配置表,直接搭建神經網路、填參數、導入數據,一點按鈕就直接開始訓練模型、得出結果。這個方法簡單實用可是神經網路搭建起來太復雜,需要填寫的參數太多,各種五花八門的選項也很難做成直觀的圖形工具。只能用一個類似Python的相對好用的語言,通過簡化的程序代碼來搭建神經網路、填寫參數、導入數據,並調用執行函數進行訓練。通過這種語言來描述模型、傳遞參數、轉換好輸入數據,然後扔到復雜的深度學習框架裡面去計算。那麼為什麼會選擇Python?科學家們很早就喜歡用Python實驗演算法,也善於使用numpy做科學計算,用pyplot畫數據圖。恰好Google內部用Python也非常多,所以採用Python也是必然的。除Python外,實際上TensorFlow框架還支持JavaScript、c++、Java、GO、等語言。按說人工智慧演算法用這些也可以。但是官方說了,除Python之外的語言不一定承諾API穩定性。所以人工智慧和Python就密不可分了。單說人工智慧的核心演算法,那是是完全依賴於C/C++的,因為是計算密集型,需要非常精細的優化,還需要GPU、專用硬體之類的介面,這些都只有C/C++能做到。所以某種意義上其實C/C++才是人工智慧領域最重要的語言。Python是這些庫的API
binding,要開發一個其他語言到C/C++的跨語言介面,Python是最容易的,比其他語言的ffi門檻要低不少,CPython的C
API是雙向融合的,可以直接對外暴露封裝過的Python對象,還可以允許用戶通過繼承這些自定義對象來引入新特性,甚至可以從C代碼當中再調用Python的函數。Python一直都是科學計算和數據分析的重要工具,Python是這些庫的API
binding,要開發一個其他語言到C/C++的跨語言介面,Python是最容易的,比其他語言的ffi門檻要低不少,CPython的C
API是雙向融合的,可以直接對外暴露封裝過的Python對象,還可以允許用戶通過繼承這些自定義對象來引入新特性,甚至可以從C代碼當中再調用Python的函數。都說時勢造英雄,也可以說是人工智慧和Python互相之間成就者對方,人工智慧演算法促進Python的發展,而Python也讓演算法更加簡單。
❾ python函數多個返回值怎麼調用
在c/c++中調用了這個函數之後不是會返回一個pyobject對象嗎?那個對象就是一個list啊,然後使用pylist_size()獲取它的大小,使用pylist_getitem()去讀取其中的元素就ok了啊。
找下python的c
api
manual,裡面這些函數的用法寫的很詳細的。
❿ csharp怎麼連接mysql資料庫
你可以訪問Python資料庫介面及API查看詳細的支持資料庫列表。不同的資料庫你需要下載不同的DBAPI模塊,例如你需要訪問Oracle資料庫和Mysql數據,你需要下載Oracle和MySQL資料庫模塊。DB-API是一個規范.它定義了一系列必須的對象和資料庫存取方式,以便為各種各樣的底層資料庫系統和多種多樣的資料庫介面程序提供一致的訪問介面。Python的DB-API,為大多數的資料庫實現了介面,使用它連接各資料庫後,就可以用相同的方式操作各資料庫。PythonDB-API使用流程:引入API模塊。獲取與資料庫的連接。執行SQL語句和存儲過程。關閉資料庫連接。什麼是MySQLdb?MySQLdb是用於Python鏈接Mysql資料庫的介面,它實現了Python資料庫API規范V2.0,基於MySQLCAPI上建立的。如何安裝MySQLdb?為了用DB-API編寫MySQL腳本,必須確保已經安裝了MySQL。復制以下代碼,並執行:#!/usr/bin/python#-*-coding:UTF-8-*-importMySQLdb