[英]Python and MySQL: is there an alternative to MySQLdb?
是否有一個純粹用 Python 編寫的模塊,它允許腳本與 MySQL 數據庫通信? 我已經嘗試過 MySQLdb 沒有成功。 它要求太多:GCC、zlib 和 openssl。 我無權使用這些工具; 即使我這樣做了,我也不想浪費時間讓他們一起工作。 我正在尋找可以讓我的工作更輕松的工具。
有人能指出我用 Python 編寫的 MySQL Python 模塊的方向嗎? 如果沒有,我將不勝感激編寫我自己的代碼以與 MySQL 通信的提示。
謝謝,
托尼
謝謝大家的回答。 由於我正在使用一個小型數據庫(幾百條記錄,主要是姓名和地址),我決定使用 SQLite。 我剛剛發現它。 它似乎非常適合我的目的; 它安裝簡單(大約需要兩分鍾),並且可以與 Python 配合使用。 我堅持使用 Python 2.4,所以我不能使用 sqlite3 模塊,但我可以使用 Python 的“subprocess.Popen”function 和命令行參數與數據庫通信。
Oracle 實現了一個純 python mysql 連接器,恰當地命名為mysql-connector-python 。 它可以通過 pip 安裝並接收大量更新。
請注意,它是 GPL 許可的,這對您的項目可能是也可能不是問題。 如果你不能忍受,你也可以選擇PyMySQL ,它是少數幾個運行良好的連接器之一,在 MIT 下分發。
我有一個問題,我想編寫適用於 Python 2 和 Python 3 的代碼。我發現pymysql
非常適合。 我無需調整代碼即可從 MySQLdb 切換到 pymysql
$ pip install PyMySQL
如果您沒有管理員權限:
$ pip install -u PyMySQL
用法與 MySQLdb 相同:
import pymysql
import pymysql.cursors
connection = pymysql.connect(host=mysql['host'],
user=mysql['user'],
passwd=mysql['passwd'],
db=mysql['db'],
cursorclass=pymysql.cursors.DictCursor)
cursor = connection.cursor()
sql = ("SELECT `id`, `formula_in_latex` FROM `wm_formula` "
"WHERE `is_important` = 1 "
"AND id != 1 " # exclude trash class
"ORDER BY `id` ASC")
cursor.execute(sql)
formulas = cursor.fetchall()
import pymysql
connection = pymysql.connect(host=mysql['host'],
user=mysql['user'],
passwd=mysql['passwd'],
db=mysql['db'])
cursor = connection.cursor()
cursor.execute("INSERT INTO `toys` (`id`, `arrival`, `duration`) "
"VALUES ('1', '2014-12-01', '123');")
connection.commit()
如前面的答案所述,MySQL 連接器/Python 在 Python 中完全實現了 MySQL 服務器/客戶端。 無需編譯,只需安裝。
以下是鏈接:
* https://launchpad.net/myconnpy
* 代碼: https://code.launchpad.net/myconnpy
* 下載: https://launchpad.net/myconnpy/+download (開發截圖)
它還沒有完成,但它應該足以讓你繼續前進。 (僅供參考,我是維護者)
您可以為大多數操作系統找到 MySQLdb 及其依賴項的預構建二進制包。
http://sourceforge.net/project/showfiles.php?group_id=22307&package_id=15775
你在什么平台上運行?
毫無疑問 MySQLdb 是最好的解決方案,但如果你不能使用它......
如果你有libmysqlclient
.[ so
| dll
],您可以使用ctypes模塊直接訪問它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.