ホームページ >バックエンド開発 >Python チュートリアル >Pythonからmysqlデータベースへのリンクの詳細な説明

Pythonからmysqlデータベースへのリンクの詳細な説明

高洛峰
高洛峰オリジナル
2016-10-19 09:13:481259ブラウズ

Python の基本的なことを学んだ後は、いつも自分でプログラムを書きたいと思っていますが、データベースを使わずにプログラムを書くのはローエンドすぎるように思えます。では、どうすれば Python を mysql に接続できますか?詳しい紹介をさせていただきます

私はMySQLdbが運営するMYSQLデータベースを使用しています。まずは簡単な例を見てみましょう:

importMySQLdb
 
try:
    conn=MySQLdb.connect(host='localhost',user='root',passwd='root',db='test',port=3306)
    cur=conn.cursor()
    cur.execute('select * from user')
    cur.close()
    conn.close()
exceptMySQLdb.Error,e:
     print"Mysql Error %d: %s"%(e.args[0], e.args[1])

データベース、ホスト名、ユーザー名、パスワードの変更には注意してください。

データの挿入、バッチでのデータの挿入、およびデータの更新の例を簡単に示してみましょう:

importMySQLdb
 
try:
    conn=MySQLdb.connect(host='localhost',user='root',passwd='root',port=3306)
    cur=conn.cursor()
     
    cur.execute('create database if not exists python')
    conn.select_db('python')
    cur.execute('create table test(id int,info varchar(20))')
     
    value=[1,'hi rollen']
    cur.execute('insert into test values(%s,%s)',value)
     
    values=[]
    fori inrange(20):
        values.append((i,'hi rollen'+str(i)))
         
    cur.executemany('insert into test values(%s,%s)',values)
 
    cur.execute('update test set info="I am rollen" where id=3')
 
    conn.commit()
    cur.close()
    conn.close()
 
exceptMySQLdb.Error,e:
     print"Mysql Error %d: %s"%(e.args[0], e.args[1])

トランザクションを送信するには、conn.commit() という文が必要であることに注意してください。そうでない場合は、データを真に送信することはできません。挿入されました。

実行後、MySQL データベースの結果は図のようになりません。

importMySQLdb
 
try:
    conn=MySQLdb.connect(host='localhost',user='root',passwd='root',port=3306)
    cur=conn.cursor()
     
    conn.select_db('python')
 
    count=cur.execute('select * from test')
    print'there has %s rows record'%count
 
    result=cur.fetchone()
    printresult
    print'ID: %s info %s'%result
 
    results=cur.fetchmany(5)
    forr inresults:
        printr
 
    print'=='*10
    cur.scroll(0,mode='absolute')
 
    results=cur.fetchall()
    forr inresults:
        printr[1]
     
 
    conn.commit()
    cur.close()
    conn.close()
 
exceptMySQLdb.Error,e:
     print"Mysql Error %d: %s"%(e.args[0], e.args[1])

クエリ後、中国語は正しく表示されますが、データベース内では文字化けします。ここでパラメータの文字セットを追加する必要があることに注意してください:

Python コードに属性を追加します

conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python) '):
次のように変更します:
conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python', charset='utf8')
charset は次のエンコーディングです。データベース 同様に、データベースが gb2312 の場合は、charset='gb2312' と書き込みます。

備考: Python mysql リンクの一般的に使用される関数

commit() commit
rollback() rollback

cursor コマンドの実行に使用されるメソッド:
callproc(self, procname, args): ストアド プロシージャの実行に使用され、受信パラメータはストアド プロシージャ名とパラメータ リストで、戻り値は影響を受ける行の数です。
execute(self, query, args): 単一の SQL ステートメントを実行します。受け取ったパラメータは、SQL ステートメント自体と使用されるパラメータ リストです。戻り値は影響を受ける行の数です
executemany(self, query, args): ヘッドアップ SQL ステートメントを実行しますが、パラメーター リスト内のパラメーターを繰り返し実行します。影響を受ける行の数
nextset(self): 次の結果セットに移動します

戻り値を受け取るためにカーソルによって使用されるメソッド:
fetchall(self): 返されたすべての結果行を受け取ります
fetchmany(self, size=None): サイズを受け取ります。 size の値が返された結果行の数より大きい場合は、cursor.arraysize 個のデータを返します。
scroll(self, value, mode='relative) '): ポインターを特定の行に移動します。mode='relative' の場合、値バーを現在の行から移動します。mode='absolute' の場合、値バーを結果セットの最初の行から移動します。 .


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