Python串連MySQL

來源:互聯網
上載者:User

著作權聲明
:轉載時請以超連結形式標明文章原始出處和作者資訊及本聲明

http://mobile2008.blogbus.com/logs/28725962.html

 

安裝好之後,模組名字叫做MySQLdb ,在Window和Linux環境下都可以使用,實驗了一下挺好用,
不過又發現了煩人的亂麻問題,最後用了幾個辦法,解決了!

我用了下面幾個措施,保證MySQL的輸出沒有亂麻:
    1 Python檔案設定編碼 utf-8 (檔案前面加上 #encoding=utf-8)

    2 MySQL資料庫charset=utf-8

    3 Python串連MySQL是加上參數 charset=utf8

    4 設定Python的預設編碼為 utf-8 (sys.setdefaultencoding(utf-8)

mysql_test.py

#
encoding=utf-8


import
 sys

import
 MySQLdb


reload(sys)

sys.setdefaultencoding(
'
utf-8
'
)


db
=
MySQLdb.connect(user
=
'
root
'
,charset
=
'
utf8
'
)

cur
=
db.cursor()

cur.execute(
'
use mydb
'
)

cur.execute(
'
select * from mytb limit 100
'
)


f
=
file(
"
/home/user/work/tem.txt
"
,
'
w
'
)


for
 i 
in
 cur.fetchall():

    f.write(str(i))

    f.write(
"

"
)


f.close()

cur.close()

上面是linux上的指令碼,windows下運行正常!

註:MySQL的設定檔設定也必須配置成utf8

設定 MySQL 的 my.cnf 檔案,在 [client]/[mysqld]部分都設定預設的字元集(通常在/etc/mysql/my.cnf):

[client]
default-character-set = utf8
[mysqld]
default-character-set = utf8
---------------------------------------------

#!/usr/bin/env python
# -*-coding:UTF-8-*-#這一句告訴python用UTF-8編碼
#=========================================================================
#
# NAME: Python MySQL test
#
# AUTHOR: benyur
# DATE  : 2004-12-28
#
# COMMENT: 這是一個python串連mysql的例子
#
#=========================================================================

"""
 ***** This is a MySQL test *****
 
 select:
  conn=Connection()
  conn.select_db('test')
  cur=conn.cursor()
  cur.execute('select * from user')
  cur.scroll(0)
  row1=cur.fetchone()
  row1[0]
  row1[1]
  row1[2]
  
 insert:
  cur.execute('insert into user (name,passwd) values(/'benyur/',/'12345/')')
  cur.insert_id()
  
 update:
  cur.execute('update user set passwd=/'123456/' where name=/'benyur/'')
  
 delete:
  cur.execute('delete from user where id=2')
 
 **********************************
"""

from MySQLdb import *

def conn():
 conn=Connection()
 conn.select_db('test')
 cur=conn.cursor()
 cur.execute('select * from user')
 cur.scroll(0)
 row1=cur.fetchone()
 row1[0]
 row1[1]
 row1[2]

def usage():
 print __doc__

if __name__=='__main__':
 usage()

MySQLdb:http://sourceforge.net/projects/mysql-python/

下載解壓縮後放到%Python_HOME%/Lib/site-packages目錄中,python會自動找到此包。
MySQLdb基本上是MySQL C API的Python版,遵循Python Database API Specification v2.0。

其他:


1.   平台及版本
linux 核心2.6,gcc 3.4.4,glibc 2.4
python 2.4.3
mysql 5.0.19
mysql-python 1.2.1-p2
2.   安裝mysql-python
tar xvfz MySQL-python-1.2.1_p2.tar.gz
cd MySQL-python-1.2.1_p2
python setup.py build
python setup.py install

3.   使用
import MySQLdb
3.1.   串連
conn =   MySQLdb.Connection(host, user, password, dbname)
3.2.   選擇資料庫
 conn.select_db(’database name’)
3.3.   獲得cursor
cur =   conn.cursor()
3.4.   cursor位置設定
cur.scroll(int, mode)
mode可為相對位置或者絕對位置,分別為relative和absolute。

3.5.   select
cur.execute(‘select clause’)
例如
cur.execute(‘select * from mytable’)

row = cur.fetchall()
或者:
row1 = cur.fetchone()
3.6.   insert
cur.execute(‘inset clause’)
例如
cur.execute(‘insert  into table (row1, row2) values (/’111/’, /’222/’)’)

conn.commit()

3.7.   update
cur.execute(‘update  clause’)
例如
cur.execute(“update  table set   row1 = ‘’  where  row2 = ‘row2 ‘  ”)

conn.commit()

3.8.   delete
cur.execute(‘delete  clause’)
例如
cur.execute(“delete from  table  where   row1 = ‘row1’  ”)

conn.commit()

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.