理由
最近、オンラインページをクロールする必要がある小さなツールをいじっています。次に解析します。結果をデータベースに入れます。
この分野では Python に利点があることを知って、Python を選択しました。
mysqlをインストールしたサーバーがあるので当然それを使います。データベースの運用中に多くの問題に遭遇しましたので、皆さんの励ましのためにここに記録しておきます。
Pythonでmysqlを呼び出す
BaiduはMySQLdbを通じてデータベース操作を実行できるようになります。ドキュメントを確認して、Python が mysql の C 言語 API を直接実装する mysql を提供していることを確認してください。 MySQLdb はそれをより高レベルでカプセル化したものであるため、より使いやすくなっています。 mysql を使用することもできますが、より良い方法は MySQLdb を使用することです
インストール中に問題が発生しました
このページ http://sourceforge.net/projects/mysql-python/ で、MySQLdb の最新バージョンをダウンロードして解凍できます。後でインストールを実行するときに問題が発生する可能性があります。
Python setup.py buildを通じてインストールを実行すると、setuptoolsというモジュールがありません
解決策、インストール
sudo apt-get install python-setuptools
もう一度実行してもエラーが発生する可能性があります mysql_config not found
この時点では mysqld-dev をインストールする必要があります
sudo apt-get install libmysqld-dev
再度実行するとエラーが発生する可能性があります。こんな感じです`
「mysql」拡張機能の構築 gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Dversion_info=(1,2,3,'final', 0 ) -Dversion=1.2.3 -I/usr/include/mysql -I/usr/include/python2.7 -c mysql.c -o build/temp.linux-i686-2.7/mysql.o -DBIG_JOINS=1 - fno-strict-aliasing -DUNIV_LINUX -DUNIV_LINUX In file added from mysql.c:29:0: pymemcompat.h:10:20: Fatal error: Python.h: No such file or directory
解決策
sudo apt- get install python-dev
このステップでは、Python 用の開発ヘッダー ファイルをいくつかインストールします。
基本的に、最初の 3 つの方法の後は、他に問題はありません。
ただし、mysqlは自分でインストールしたものとする。また、lib ファイルが /usr/local/lib 以下に配置されていない場合はエラーが報告されます。
解決策は、ファイルをこのフォルダーにソフトリンクするか、システムの /etc/ld.so.cnf ファイルを変更して、ライブラリが配置されているフォルダーを配置することです。どちらの方法も機能します。次に、ldconfig でそれを有効にします。
例えば最初の方法を使います ln -s /usr/local/mysql/lib/mysql/libmysqlclient* /usr/lib
実際の使い方
MySQLdbライブラリを導入します
MySQLdbをインポートします
データベースに接続します
conn= MySQLdb.connect(host="localhost", user="root", passwd="sa", db="mytable", charset="utf8")
提供された connect メソッドは、接続を確立するために使用されますデータベースと連携していくつかのパラメータを受け取り、接続オブジェクトを返します
ステートメントを実行して結果を取得します
cursor=conn.cursor() n=cursor.execute(sql,param)
まず接続オブジェクトを使用します次に、cursor が提供するメソッドを使用して作業します。これらのメソッドには、1. コマンドを実行する、2. 戻り値を受け取る
の 2 つの主要なカテゴリがあります。ここは不明
終わり。データベース接続
を閉じるには、ポインタオブジェクトと接続オブジェクトを別々に閉じる必要があります
cursor.close()
conn.close()
よく使う操作API
トランザクション操作のサポート、標準 メソッド commit() Submit
Rollback() Rollback
コマンドを実行するためにカーソルによって使用されるメソッド:
Callproc (self, procname, args): ストアド プロシージャの実行に使用され、受け取ったパラメータは次のとおりですストアド プロシージャ名とパラメータ リスト、戻り値は影響を受ける行の数です
Execute(self, query, args): 単一の SQL ステートメントを実行します。受け取ったパラメータは SQL ステートメント自体と使用されたパラメータ リスト、戻り値はvalue は影響を受ける行の数です
executemany(self, query, args): 単一の SQL ステートメントを実行しますが、パラメーター リスト内のパラメーターを繰り返し実行し、戻り値は影響を受ける行の数です nextset(self): Move次の結果セットへ
戻り値を受け取るためにカーソルによって使用されるメソッド:
fetchall(self): 返されたすべての結果行を受信します。
: fetchmany(self, size=None): 値が返される結果行を受け取ります。 size が返された結果行の数より大きい場合、cursor.arraysize 個のデータが返されます。
fetchone(self): 結果行を返します。
Scroll(self, value, mode='relative'): 移動します。特定の行へのポインタ。 mode='relative' とすると、現在の行から値 bar を移動します。
とすると、結果セットの最初の行から値 bar を移動します。最後に一文
コンピューターは ubuntu14.04 にアップグレードされ、再度インストールされました。 以前のブログ リポジトリはなくなっており、github から再びプルバックされました。何か問題が発生しました。ファイルを削除してしまい、この記事もほとんど消えてしまいました。今この記事を読むことができて本当に良かったです。