Pythonを使ってデータベース(mysql)を操作する方法

迷茫
リリース: 2017-03-25 16:51:22
オリジナル
2037 人が閲覧しました

1. 基本的なデータベース操作

1. データベースへの中国語の書き込みを許可したい場合は、データベースの作成時に次のコマンドを使用できます

create database zcl charset utf8;
ログイン後にコピー

2. Students テーブルの構造を表示します。

desc students;
ログイン後にコピー

3. 学生テーブル構造を作成するためのステートメントを表示します

show create table students;
ログイン後にコピー

4. データベースを削除します

drop database zcl;
ログイン後にコピー

PS: 上記の「単純な説明 + コード」は本当に嫌いです」ブログ。実際、mysqlターミナルで多くの例を書いたのですが、当時のコンピューターではビデオ視聴ソフトウェアが実行されていたため、Ctrl+C/Vができませんでした。もうめんどくさいです笑~~

2. Python はデータベースに接続します

python3 は mysqldb をサポートしなくなりました。その代替モジュールは PyMySQL です。 この記事の例は python3.4 環境でのものです。

1. pymysql モジュールをインストールします

alter table students add column nal char(64); 
ログイン後にコピー

2. データベースに接続し、データ インスタンスを挿入します

pip3 install pymysql
ログイン後にコピー

結果を表示します:

import pymysql
#生成实例,连接数据库zcl
conn = pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='zcl')
#生成游标,当前实例所处状态
cur = conn.cursor()
#插入数据
reCount = cur.execute('insert into students(name, sex, age, tel, nal) values(%s, %s, %s, %s, %s)',('Jack','man',25,1351234,"CN"))
reCount = cur.execute('insert into students(name, sex, age, tel, nal) values(%s, %s, %s, %s, %s)',('Mary','female',18,1341234,"USA"))

conn.commit()  #实例提交命令

cur.close()
conn.close()
print(reCount)
ログイン後にコピー
3.リーリー

出力:

mysql> select* from students;+----+------+-----+-----+-------------+------+
| id | name | sex | age | tel         | nal  |
+----+------+-----+-----+-------------+------+
|  1 | zcl  | man |  22 | 15622341234 | NULL |
|  2 | alex | man |  30 | 15622341235 | NULL |
+----+------+-----+-----+-------------+------+
2 rows in set
ログイン後にコピー

3. トランザクション ロールバック

トランザクション ロールバックは、データがデータベースに書き込まれる前に実行されるため、インスタンスがコマンド conn.commit()。

データが送信されない限り、ロールバックすることができますが、IDはロールバック後にインクリメントされます

。次の例を見てください:

3 つのデータを挿入します (トランザクションのロールバックに注意してください):

import pymysql

conn = pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='zcl')
cur = conn.cursor()

reCount = cur.execute('select* from students')

res = cur.fetchone()       #获取一条数据
res2 = cur.fetchmany(3)   #获取3条数据
res3 = cur.fetchall()     #获取所有(元组格式)
print(res)
print(res2)
print(res3)
conn.commit()

cur.close()
conn.close()
ログイン後にコピー
コマンドの実行前とコマンドの実行後 (ロールバック操作を含む) (ID 番号に注意してください) ): 上記のコードは実行されません。結果は上記のコードを実行したのと同じです!! トランザクションがロールバックされているため、コマンドの実行後、students テーブルにはデータが追加されません (ロールバックは含まれません)。操作): 上記のコードの 11 行目をコメントアウトするだけです。

(1, 'zcl', 'man', 22, '15622341234', None)
((2, 'alex', 'man', 30, '15622341235', None), (5, 'Jack', 'man', 25, '1351234', 'CN'), (6, 'Mary', 'female', 18, '1341234', 'USA'))
()
ログイン後にコピー

概要: トランザクションはロールバックされますが、IDはインクリメントされており、ロールバックによってキャンセルされませんが、これはデータの一貫性には影響しません

(根本的な原理はわかりません) ~)

4. バッチでデータを挿入します

import pymysql
#连接数据库zcl
conn=pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='zcl')
#生成游标,当前实例所处状态
cur=conn.cursor()
#插入数据
reCount=cur.execute('insert into students(name, sex, age, tel, nal) values(%s, %s, %s, %s, %s)', ('Jack', 'man', 25, 1351234, "CN"))
reCount=cur.execute('insert into students(name, sex, age, tel, nal) values(%s,%s,%s,%s,%s)', ('Jack2', 'man', 25, 1351234, "CN"))
reCount=cur.execute('insert into students(name, sex, age, tel, nal) values(%s, %s, %s, %s, %s)', ('Mary', 'female', 18, 1341234, "USA"))

conn.rollback()      #事务回滚
conn.commit()        #实例提交命令

cur.close()
conn.close()
print(reCount)
ログイン後にコピー

Pycharm 出力: 5

mysql ターミナル表示:

mysql> select* from students;+----+------+--------+-----+-------------+------+
| id | name | sex    | age | tel         | nal  |
+----+------+--------+-----+-------------+------+
|  1 | zcl  | man    |  22 | 15622341234 | NULL |
|  2 | alex | man    |  30 | 15622341235 | NULL |
|  5 | Jack | man    |  25 | 1351234     | CN   |
|  6 | Mary | female |  18 | 1341234     | USA  |
+----+------+--------+-----+-------------+------+
4 rows in set
ログイン後にコピー

学んだことは時間内に要約する必要があります、いくつかのことは忘れられています~_ ~

以上がPythonを使ってデータベース(mysql)を操作する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート