ホームページ >バックエンド開発 >Python チュートリアル >Pythonからmysqlデータベースへのリンクの詳細な説明
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' の場合、値バーを結果セットの最初の行から移動します。 .