Python Web クローラーでは、通常、TXT プレーン テキストで保存されますが、同時に、WAMP (Windows、Apache、MySQL、PHP、または Python) 開発 Web サイトでは、Web ページもデータベースに保存できます。 Python を介して構築されるため、この記事では主に Python による MySQL データベースの呼び出しに関連するプログラミングの知識について説明します
Python Web クローラーでは、通常、TXT プレーン テキストで保存されますが、同時にデータベースに保存することもできます。 WAMP (Windows、Apache、MySQL、PHP、または Python) では、Python を使用して Web ページを構築することもできるため、この記事では主に、MySQL データベースを呼び出す Python に関連するプログラミングの知識について説明します。以下の側面から説明します:
1. MySLQの設定
2. SQL文の基礎知識
3. MySQLを操作するPythonの基礎知識
1. MySQLの設定
- 5.0.96-winx64、インストール
のプロセスを以下の図に示します。 1. MySQL 5.0 をインストールします
2. 手動構成、サービスタイプ、ユニバーサル多機能、およびインストールパスを選択します
3. データベースアクセス接続数を15、ポートは 3306 (コード内で URL を設定するために使用)、エンコード方式は utf-8
4. デフォルトのスーパー root ユーザーのユーザー名とパスワードを設定し、最後にインストールは成功しました
MySQL 5.0 のインストールが成功したら、データベースに対して簡単な操作を実行します。
1. MySQL を実行し、デフォルトのユーザーパスワード 123456 を入力します
データベース
test01 を作成し、データベースを使用します (2 番目の呼び出しはデータベースを直接使用します)
データベースに含まれるデータベースを表示します: show Databases;
create tablestudent(username varchar(20),password
varchar(20),stuid int Primary 4. テーブル構造を表示し、ステートメント desc Student
を使用します。 5. データ を Student テーブル
に挿入し、
6. テーブルを削除: テーブル Student;
7. データを更新 up
date Student set password='000000 ' where stuid='1';
8. Student からデータを削除 Delete
Where Username = 'Eastmount; これで、MYSQL 操作データベースの基本的な説明は終わりましたが、データベースの削除、変更、処理、他の操作については、ビジュアル ソフトウェアをインストールしてブラック ボックスを置き換えるか、Navicatfor MySQL ソフトウェアを使用することをお勧めします。コードは次のとおりです:
Enter password: ****** mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | | test01 | +--------------------+ 5 rows in set (0.00 sec) mysql> use test01; Database changed mysql> show tables; Empty set (0.00 sec) mysql> create table student(username varchar(20), -> password varchar(20), -> stuid int primary key); Query OK, 0 rows affected (0.33 sec) mysql> show tables; +------------------+ | Tables_in_test01 | +------------------+ | student | +------------------+ 1 row in set (0.00 sec) mysql> desc student; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | username | varchar(20) | YES | | NULL | | | password | varchar(20) | YES | | NULL | | | stuid | int(11) | NO | PRI | NULL | | +----------+-------------+------+-----+---------+-------+ 3 rows in set (0.03 sec) mysql> insert student(username, password, stuid) -> values('eastmount','123456',1) -> ; Query OK, 1 row affected (0.05 sec) mysql> select * from student; +-----------+----------+-------+ | username | password | stuid | +-----------+----------+-------+ | eastmount | 123456 | 1 | +-----------+----------+-------+ 1 row in set (0.00 sec) mysql> update student set password='000000' where stuid='1'; Query OK, 1 row affected (0.10 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from student; +-----------+----------+-------+ | username | password | stuid | +-----------+----------+-------+ | eastmount | 000000 | 1 | +-----------+----------+-------+ 1 row in set (0.00 sec) mysql> delete from student where username='eastmount'; Query OK, 1 row affected (0.08 sec) mysql> select * from student; Empty set (0.00 sec) mysql>3. MySQL を呼び出す Python の基礎知識
通常のインストール方法は、pip install mysql を使用して Python の MySQL ライブラリをインストールしますが、常にエラーが報告されます。
の例: Microsoft Visual C++ 9.0が必要です(vcvarsall.batが見つかりません)mysql.c(42): 致命的なエラー C1083: インクルードファイルを開けません: 'config-win.h': そのようなファイルはありませんまたはディレクトリ
これらはドライバーの問題である可能性があります。
正しいインストール方法:
インストールのために MySQL-python-1.2.3.win-amd64-py2.7.exe ファイルをダウンロードすることをお勧めします。
ダウンロード アドレス: www.jb51.net/softs/73369.html
ここで、Python データベース
API について詳しく学ぶ必要があります
インターフェース プログラムが必要です。インターフェース プログラムは、アクセスするためのデータベース クライアント ライブラリ (通常は
C 言語 で書かれています) へのインターフェースを提供する Python モジュールです。注: Python インターフェイス プログラムは、Python DB-API 仕様に準拠している必要があります。 DB-APIは仕様です。これは、基礎となるさまざまなデータベース システムおよびさまざまなデータベース インターフェイス プログラムに一貫したアクセス インターフェイスを提供するために、一連の必要なオブジェクトとデータベース アクセス メソッドを定義します。 DB-API は、異なるデータベースに一貫したアクセス インターフェイスを提供し、異なるデータベース間でのコードの移植を容易にします。 以下は DB-API の使用方法を簡単に紹介します。
1. モジュール属性
DB-API 仕様の次の機能と属性を提供する必要があります。 DB-API 互換モジュール定義は次のとおりです:
apilevel:模块兼容的DB-API版本号 threadsafety:线程安全级别 paramstyle:支持sql语句参数风格 connect():连接数据库Python は MsSQL を呼び出し、次のように MySQLdb ライブラリをインポートする必要があります: function
import MySQLdb
使用される主なメソッドは次のとおりです。接続オブジェクト。 connect() メソッドは、データベースにアクセスするための接続オブジェクトを生成します。そのパラメーターは次のとおりです。
user:Username
password:Password
host:Hostname
database:DatabaseName
dsn:Data source name
MySQLdb など、すべてのインターフェイス プログラムがこの形式に厳密に従っているわけではないことに注意してください。
import MySQLdb conn = MySQLdb.connect(host='localhost', db='test01', user='root', passwd='123456', port=3306, charset='utf8')
connect() オブジェクトのメソッドは次のとおりです:
close():关闭数据库连接,或者关闭游标对象 commit():提交当前事务 rollback():取消当前事务 cursor():创建游标或类游标对象 errorhandler(cxn,errcls,errval):作为已给游标的句柄
close() メソッドが実行されると、上記の接続オブジェクト メソッドは使用できなくなり、そうでない場合は例外が発生することに注意してください。 commit()、rollback()、およびcursor()は、トランザクションをサポートするデータベースにとってより意味のあるものになる可能性があります。
Database Trans
) は、完全に実行されたか、まったく実行されなかった、単一の論理的な作業単位として実行される一連の操作を指します。 データベース接続が完了したら、カーソル オブジェクトを閉じ、commit() を実行して操作を送信し、接続を閉じます。
3.游标对象
上面说了connect()方法用于提供连接数据库的接口,如果要对数据库操作那么还需要使用游标对象。游标对象的属性和方法:
fetchone():可以看作fetch(取出) one(一个),也就是得到结果集的下一行(一行)。 fetchmany(size):可以看作fetch(取出)many(多个),这里的参数是界限,得到结果集的下几行(几行) fetchall():顾名思义,取得所有。 execute(sql):执行数据库操作,参数为sql语句。 close():不需要游标时尽可能的关闭
下面通过简单的示例进行讲解。
四. Python调用MySQL示例
在前面数据库中我们创建了数据库“test01”和表“student”,同时插入了数据。那么,怎样通过Python来显示呢?
1.查询所有数据库
首先,我们查看本地数据库中所包含的数据库名称,通过“show databases”语句。
import MySQLdb try: conn=MySQLdb.connect(host='localhost',user='root',passwd='123456',port=3306) cur=conn.cursor() res = cur.execute('show databases') print res for data in cur.fetchall(): print '%s' % data cur.close() conn.close() except MySQLdb.Error,e: print "Mysql Error %d: %s" % (e.args[0], e.args[1])
其中通过链接数据库代码为:
conn=MySQLdb.connect(host='localhost',user='root',passwd='123456',port=3306)
访问root超级用户,其密码为“123456”,端口为“3306”,其结果如下:
如果不知道本地数据库的名称,可以通过该方法,先查询数据库中包含哪些数据库,然后再连接该数据库进行相关的操作。
2.查询表
下面介绍查询表student中数据,代码如下,代码的具体含义是通过connect()连接数据库,通过conn.cursor()定义游标,然后调用游标的excute(sql)执行数据库操作,此处为查询操作,再通过fetchall()函数获取所有数据。
# coding:utf-8 import MySQLdb try: conn=MySQLdb.connect(host='localhost',user='root',passwd='123456',port=3306, db='test01', charset='utf8') cur=conn.cursor() res = cur.execute('select * from student') print u'表中包含',res,u'条数据\n' print u'数据如下:(姓名 密码 序号)' for data in cur.fetchall(): print '%s %s %s' % data cur.close() conn.close() except MySQLdb.Error,e: print "Mysql Error %d: %s" % (e.args[0], e.args[1])
输出结果如图所示:
对应的MySQL中的结果是一致的,下图是对应的结果。
3.创建表
下面这段代码是创建一张教师表,主要是通过commit()提交数据。
# coding:utf-8 import MySQLdb try: conn=MySQLdb.connect(host='localhost',user='root',passwd='123456',port=3306, db='test01', charset='utf8') cur=conn.cursor() #查看表 print u'插入前包含表:' cur.execute('show tables') for data in cur.fetchall(): print '%s' % data #插入数据 sql = '''create table teacher(id int not null primary key auto_increment, name char(30) not null, sex char(20) not null )''' cur.execute(sql) #查看表 print u'\n插入后包含表:' cur.execute('show tables') for data in cur.fetchall(): print '%s' % data cur.close() conn.commit() conn.close() except MySQLdb.Error,e: print "Mysql Error %d: %s" % (e.args[0], e.args[1])
输出结果如下所示,插入教师表,包含字段:教师序号(id)、教师名称(name)、教师性别(sex)。
插入数据也可以通过execute(sql)方法实现,如:
cur.execute("insert into student values( 'yxz', '111111', '10')")
但插入的新数据通常是通过变量进行赋值,而不是固定的,所以要对这条语句中的值做修改。我们可以做如下修改:
# coding:utf-8 import MySQLdb try: conn=MySQLdb.connect(host='localhost',user='root',passwd='123456',port=3306, db='test01') cur=conn.cursor() #插入数据 sql = '''insert into student values(%s, %s, %s)''' cur.execute(sql, ('yxz','111111', '10')) #查看数据 print u'\n插入数据:' cur.execute('select * from student') for data in cur.fetchall(): print '%s %s %s' % data cur.close() conn.commit() conn.close() except MySQLdb.Error,e: print "Mysql Error %d: %s" % (e.args[0], e.args[1])
输出结果如下所示:
>>> 插入数据: esatmount 123456 1 yangxiuzhang 123456 2 xiaoy 123456 3 yxz 111111 10 >>>
同样,对数据库的增删改插都可以进行,请读者自行阅读。
推荐资料:python使用mysql数据库 - 虫师
后面我会结合Python爬虫讲述,如何将爬取的内容存储在数据库中,如我CSDN的博客,爬取博客标题、发布时间、阅读量和评论数。
MySQL数据库中结果如下图所示:
【相关推荐】
1. 特别推荐:“php程序员工具箱”V0.1版本下载
2. Python免费视频教程
3. Python基础入门教程
以上がMysql データベースのインストールと使用方法のチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。