ホームページ  >  記事  >  バックエンド開発  >  Python で MYSQL を使用する

Python で MYSQL を使用する

巴扎黑
巴扎黑オリジナル
2016-12-07 10:19:331152ブラウズ

理由

最近、オンラインページをクロールする必要がある小さなツールをいじっています。次に解析します。結果をデータベースに入れます。

この分野では 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 から再びプルバックされました。何か問題が発生しました。ファイルを削除してしまい、この記事もほとんど消えてしまいました。今この記事を読むことができて本当に良かったです。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。