python连接数据库操作MySQL
admin
2023-06-11 08:03:39
0

参考

:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001391435131816c6a377e100ec4d43b3fc9145f3bb8056000


http://www.cnblogs.com/fnng/p/3565912.html



一 模块

  • mysql-connector-python:是MySQL官方的纯Python驱动;

  • MySQL-python:是封装了MySQL C驱动的Python驱动。

可以把两个都装上,使用的时候再决定用哪个:

$ pip install  mysql-connector-python
pip install  MySQL-python

或者 使用yum安装(包名我忘记了 可以是使用yum search mysql去找)

yum install MySQL-python



测试是否按照好的驱动

#!/usr/bin/env python
#coding:utf-8
import sys
try:
    import MySQLdb
    print "MySQL python drivier is ok!"
except Exception, e:
    print e
    sys.exit(1)
finally:
    sys.exit(1)


二、数据库中的表

show create table net_data; 可以查看


CREATE TABLE `net_data` (
  `_id` int(11) NOT NULL AUTO_INCREMENT,
  `create_date` datetime NOT NULL,
  `province` varchar(64) NOT NULL,
  `city` varchar(64) NOT NULL,
  `net_type` enum('CTC','CNC','CMC','JK') NOT NULL,
  `med` float NOT NULL,
  `loss` float NOT NULL,
  PRIMARY KEY (`_id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;


三  先看插入的实例吧


作用,连接数据库插入一条数据


数据库插入一条数据

import MySQLdb
....
....
def insert_into_mysql(info):
    conn= MySQLdb.Connect(
            host='localhost',
            port = 3306,
            user='root',
            passwd='12qwaszx',
            db ='netmap',
            charset='utf8',
            )
    cur = conn.cursor()
    sqli = "insert into net_data (create_date,province,city,net_type,med,loss) values(%s,%s,%s,%s,%s,%s)"
    cur.execute(sqli,(datetime.now(),'上海','上海','CTC','23','0'))
    conn.commit()
    cur.close()
    conn.close()




同时插入多条数据

#info type is list 列表
def insert_into_mysql(info):
    conn= MySQLdb.Connect(
            host='localhost',
            port = 3306,
            user='root',
            passwd='12qwaszx',
            db ='netmap',
            charset='utf8',
            )
    cur = conn.cursor()
    sqli = "insert into net_data (create_date,province,city,net_type,med,loss) values(%s,%s,%s,%s,%s,%s)"
    cur.executemany(sqli,(info))
    conn.commit()
    cur.close()
    conn.close()




四、查询实例(完成程序的一部分,完成的是一个统计报表发送的邮件的程序)

#!/usr/bin/env python
#encoding=utf8
#by cuizhiliang at 2016-04-29
from datetime import datetime, timedelta
import time
from jinja2 import Template
from sendmail import SendHtmlEmail
import MySQLdb
import os,sys
reload(sys)
sys.setdefaultencoding("utf-8")
g= {
    'host': '127.0.0.1',
    'port': 3306,
    'user': 'zabbix',
    'password': 'zabbix',
    'db':'zabbix',
}
now= datetime.now()
yesterday = now - timedelta(1)
yest_clock = (datetime.now()  -timedelta(1)).strftime('%s')
data = {}
def select_mysql(cmd):
    conn= MySQLdb.Connect(
            host= g['host'],
            port= g['port'],
            user= g['user'],
            passwd= g['password'],
            db =g['db'],
            charset='utf8',
            )
    #print cmd
    cur = conn.cursor()
    cur.execute(cmd)
    res =cur.fetchall()
    return res
#zabbix 上用户列表
def get_user_info():
    cmd="select userid, alias,  name, type  from users;"
    user_list = []
    user_list= list(select_mysql(cmd))
    print user_list
    return user_list
if __name__ == "__main__":
    
    data["user"]= get_user_info()


五、注意: 

1 插入数据库中文乱码  连接数据的字符集 一定要设定

charset='utf8'


2 不惯数据库中的字段是datetime类型还是int类型,在插入的时候都传为%s 字符串类型,类型对我们是透明了,模块会自动处理类型! 


3 模块在mac中可能会出错 MySQLdb 


报错:

Traceback (most recent call last):

  File "ping_info.py", line 12, in

    import MySQLdb

  File "/Library/Python/2.7/site-packages/MySQLdb/__init__.py", line 19, in

    import _mysql

ImportError: dlopen(/Library/Python/2.7/site-packages/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib

  Referenced from: /Library/Python/2.7/site-packages/_mysql.so

  Reason: p_w_picpath not found



解决方法,因为是C语言开发驱动,所有依赖mysql客户端模块

 sudo find / -name "libmysqlclient.18.dylib"

/usr/local/mysql-5.6.24-osx10.8-x86_64/lib/libmysqlclient.18.dylib

sudo cp /usr/local/mysql-5.6.24-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib



相关内容

热门资讯

从“数字门牌”到“智能入口” ... 人民网记者 黄盛 “十五五”时期,在“人工智能+”行动全面实施的过程中,中文域名如何借助AI技术实现...
通讯|在意大利比萨的实验室看人...   新华社意大利比萨5月25日电 通讯|在意大利比萨的实验室看人与机器人“共生”   新华社记者刁泽...
2026 年 6 月销售专用工... 2026 年,销售团队数字化转型加速,专用工作手机成为企业守护客资、提升人效、规范管理的核心装备。 ...
谷歌CEO最新访谈:谷歌多模态... 作者|林易 编辑|重点君 谷歌I/O大会落幕后,谷歌首席执行官Sundar Pichai接受了知名科...
最赚钱的海力士,其实是存储周期... 技术突破再难,难不过老天爷赏饭。 潮水终究会褪去,周期总是要轮回。 作者|刘 然 编辑|杨知潮 商业...
为创新系上“安全带” 让硬科技... 来源:滚动播报 (来源:新华日报) □ 本报记者 崔 昊 科技创新投入大、周期长、风险高,犹如攀登险...
2名外籍女非法滞留我国,经中间... 5月25日,据平安永安,“我是一名网约车司机,车上两名外籍人员无护照!”5月13日21时许,一名外地...
伊朗的秘密武器:10个年轻人,... 在伊朗战事中,伊朗一个名为“爆炸媒体”的创意团队异军突起。这个团队仅约10名成员,但他们善于运用人工...
南太岛国瑙鲁推出“反独”新规范... 5月20日,南太平洋岛国瑙鲁发布公告表示,该国内阁已通过一个内部规范,要求本国境内及海外所有公职人员...
因耳环遭网暴的村干部:耳环几十... “电也没有,网也没有,特别是看到我们的村部,设施成了这个样子……”说出这句话的,是湖南石门县龙池河村...