Python運算元據庫(3)
通過python運算元據庫的行為,任何對資料庫進行的操作,都能夠通過python-mysqldb來實現。
建立資料庫
之前通過mysql>
寫SQL語句,建立了一個名字叫做mytest的資料庫,然後用下面的方式跟這個資料庫連線
>>> import MySQLdb
>>> conn = MySQLdb.connect(host="localhost",user="root",passwd="123123",db="mytest",charset="utf8")
在上面的連線中,引數db="mytest"
其實可以省略,如果省略,就是沒有跟任何具體的資料庫連線,只是連線了mysql。
>>> import MySQLdb
>>> conn = MySQLdb.connect("localhost","root","123123",port=3306,charset="utf8")
這種連線沒有指定具體資料庫,接下來就可以用類似mysql>
互動模式下的方式進行操作。
>>> conn.select_db("mytest")
>>> cur = conn.cursor()
>>> cur.execute("select * from users")
11L
>>> cur.fetchall()
((1L, u`hiekay`, u`123123`, u`hiekay@gmail.com`), (2L, u`python`, u`123456`, u`python@gmail.com`), (3L, u`google`, u`111222`, u`g@gmail.com`), (4L, u`facebook`, u`222333`, u`f@face.book`), (5L, u`github`, u`333444`, u`git@hub.com`), (6L, u`docker`, u`444555`, u`doc@ker.com`), (7L, u`u5854`, u`9988`, u`hiekay@gmail.com`), (8L, u`u5854`, u`9988`, u`hiekay@gmail.com`), (9L, u`u5854`, u`9988`, u`hiekay@gmail.com`), (10L, u`u5854`, u`9988`, u`hiekay@gmail.com`), (11L, u`u5f20u4e09`, u`1122`, u`hiekay@gmail.com`))
用conn.select_db()
選擇要操作的資料庫,然後通過指標就可以操作這個資料庫了。其它的操作跟之前的一樣。
如果不選資料庫,而是要新建一個資料庫,如何操作?
>>> cur = conn.cursor()
>>> cur.execute("create database newtest")
1L
建立資料庫之後,就可以選擇這個資料庫,然後在這個資料庫中建立一個資料表。
>>> cur.execute("create table newusers (id int(2) primary key auto_increment, username varchar(20), age int(2), email text)")
0L
括號裡面是引號,引號裡面就是建立資料表的語句,一定是熟悉的。這樣就在newtest這個資料庫中建立了一個名為newusers的表
>>> cur.execute("show tables")
1L
>>> cur.fetchall()
((u`newusers`,),)
這是檢視錶的方式。當然,可以在mysql>
互動模式下檢視是不是存在這個表。如下:
mysql> use newtest;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+-------------------+
| Tables_in_newtest |
+-------------------+
| newusers |
+-------------------+
1 row in set (0.00 sec)
mysql> desc newusers;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | int(2) | NO | PRI | NULL | auto_increment |
| username | varchar(20) | YES | | NULL | |
| age | int(2) | YES | | NULL | |
| email | text | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
以上就通過python-mysqldb實現了對資料庫和表的建立。
當然,能建就能刪除。可以自行嘗試,在這裡就不贅述,原理就是在cur.execute()
中寫SQL語句。
關閉一切
當進行完有關資料操作之後,最後要做的就是關閉遊標(指標)和連線。用如下命令實現:
>>> cur.close()
>>> conn.close()
注意關閉順序,和開啟的順序相反。
關於亂碼問題
這個問題是編寫web時常常困擾程式設計師的問題,亂碼的本質來自於編碼格式的設定混亂。所以,要特別提醒諸位注意。在用python-mysqldb的時候,為了放置亂碼,可以做如下統一設定:
- Python檔案設定編碼 utf-8(檔案前面加上 #encoding=utf-8)
- MySQL資料庫charset=utf8(資料庫的設定方法,可以網上搜尋)
- Python連線MySQL是加上引數 charset=utf8
- 設定Python的預設編碼為 utf-8 (sys.setdefaultencoding(utf-8),這個後面會講述)
程式碼示例:
#encoding=utf-8
import sys
import MySQLdb
reload(sys)
sys.setdefaultencoding(`utf-8`)
db=MySQLdb.connect(user=`root`,charset=`utf8`)
MySQL的配置檔案設定也必須配置成utf8 設定 MySQL 的 my.cnf 檔案,在 [client]/[mysqld]部分都設定預設的字符集(通常在/etc/mysql/my.cnf):
[client] default-character-set = utf8
[mysqld] default-character-set = utf8
相關文章
- 運算元據庫
- Python學習:運算元據庫Python
- python運算元據Python
- [python] 基於Dataset庫運算元據庫Python
- 運算元據庫表
- yii運算元據庫
- Mysqli運算元據庫MySql
- DDL:運算元據庫
- jmeter運算元據庫JMeter
- ecshop運算元據庫類
- PHP mysqli 運算元據庫PHPMySql
- 教你如何用python運算元據庫mysql!!PythonMySql
- 利用 Sequelize 來運算元據庫
- java 運算元據庫備份Java
- perl協程運算元據庫
- Go語言運算元據庫Go
- 求助 liferay運算元據庫
- python運算元據庫,批量插入資料庫資料Python資料庫
- Django在Ubuntu下運算元據庫DjangoUbuntu
- go 語言運算元據庫 CRUDGo
- JDBC運算元據庫基本步驟JDBC
- Android中使用LitePal運算元據庫Android
- 資料庫誤運算元據恢復資料庫
- 肖sir__jmeter之運算元據庫JMeter
- MySQL DML運算元據MySql
- lavavel 中運算元據庫查詢別名
- 使用WordPress中的wpdb類運算元據庫
- ASP.Net中用DataGrid運算元據庫ASP.NET
- 非常有用的jdbc的運算元據庫JDBC
- Oracle OCP(10):運算元據Oracle
- Go語言運算元據庫及其常規操作Go
- 如何讓Designer更好地運算元據庫物件物件
- 利用javaBean運算元據庫表及其子段 (轉)JavaBean
- uniapp單機軟體運算元據庫(安卓)APP安卓
- 好程式設計師分享DDL之運算元據庫程式設計師
- spring-boot-route(七)整合jdbcTemplate運算元據庫SpringbootJDBC
- spring-boot-route(八)整合mybatis運算元據庫SpringbootMyBatis
- spring-boot-route(九)整合JPA運算元據庫Springboot