#python2.7
#mysql
数据库连接:
1.普通连接
import MySQLdb
try:
db = MySQLdb.connect(host = base_ip,user = base_user,charset = 'utf8',passwd = base_pwd,db = base_db)
except Exception as e:
print e
cursor = db.cursor()
cursor.execute('select * from table_name')
cursor.fetchall()
db.close()
2.连接池连接
import pymysql
from DBUtils.PooledDB import PooledDB
mysql_db_pool=PooledDB(creator=pymysql, mincached=1, maxcached=2, maxconnections=100, host=host, port=3306, user=user, passwd=passwd, db=db, charset='utf8', use_unicode=False, blocking=True)#maxconnections为最大连接数
db = mysql_db_pool.connection() # 连接
cursor = db.cursor()
...
#其他基本操作与普通连接数据库无异
数据库更新:
sql = "update table_name set data1='{0}' where data_id='{1}' " .format(up1,flag)
try:
cursor.execute(sql)
cursor.commit()
except Exception as e:
cursor.rollback()
print e
cursor.close()
数据库插入:
sql = """INSERT INTO table_name(
data1,data2,data3,data4)
VALUES (%s,%s,%s,%s)"""
#不管要入库的数据是什么格式都写成 %s
try:
cursor.execute(sql,(data_str,data_text,data_json,data_int))
db.commit() #
except:
cursor.rollback()
db.close()
<>至于数据库其他操作,一般直接操作数据库<>
MyCli:支持自动补全和语法高亮的 MySQL 客户端
安装:
$ pip install mycli
如果是OS X平台:
$ brew install mycli
怕麻烦就直接使用mysql
#下面mycli命令和mysql可以互换
#大小写无所谓,为了区分而已
建/删除数据库:
#root权限下 #create:建 #drop:删除
mysqladmin -u root -p create DATABASE
Enter password:******
建/删除表:
如果要建一个和已知表相同的表
show create table table_name;
#复制粘贴就行了(和下面一样)
CREATE TABLE IF NOT EXISTS `table_name`(
`data_1` INT UNSIGNED AUTO_INCREMENT,
`data_2` VARCHAR(100) NOT NULL,
`data_3` VARCHAR(40) NOT NULL,
`data_4` DATE,
PRIMARY KEY ( `data_1` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
删除
#删除表中全部或者部分数据
DELETE FROM table_name WHERE data_1 = '123';
#删除表
DROP TABLE table_name;
连接数据库:
mycli -hHOST -uUSER -pPSW
查看/选择数据库
show databases;
use database_name;
查看数据表
show tables;
查找:
SELECT * FROM table_name;
SELECT * FROM table_name LIMIT 5\G;
SELECT data1,data2 FROM table_name WHERE data = '123';
SELECT DISTINCT data1 FROM table_name ; #无重复查找
#查找id重复数大于1的所有数据
SELECT id,COUNT(id) AS s_count FROM table_name WHERE source=sr GROUP BY id HAVING s_count>1
一个表的数据插入另一个表中
#[input table]
INSERT INTO target SELECT * FROM source;
INSERT IGNORE INTO target SELECT * FROM source; #忽略键值重复的
REPLACE INTO target SELECT * FROM source; #替换键值重复的
导出数据本地:
$ mysqldump -hHOST -uUSER -pPSW database_name table_name > tmp.sql
从本地导入数据:
$ mysqlimport -hHOST -uUSER -pPSW --local database_name tmp.sql
写在最后
关于linux/unix下mysql的命令设置
编辑~/.bashrc文件,加入下面语句
alias mysql=/usr/local/mysql/bin/mysql
alias mysqladmin=/usr/local/mysql/bin/mysqladmin
编辑~/.bash_profile文件,加入下面语句
source ~/.bashrc
完成后mysql命令便会永久生效