python操作数据库示例

import mysql.connector

class Database:
    def connectdb(self):
        print('连接到mysql服务器...')
        # 打开数据库连接
        # 用户名:hp, 密码:Hp12345.,用户名和密码需要改成你自己的mysql用户名和密码,并且要创建数据库TESTDB,并在TESTDB数据库中创建好表Student
        db = mysql.connector.connect(user="root", passwd="****", database="Feature", charset="utf8")
        print '连接上了!'
        return db

    def createtable(self, db):
        # 使用cursor()方法获取操作游标
        cursor = db.cursor()

        # 如果存在表Sutdent先删除
        cursor.execute("DROP TABLE IF EXISTS fonts")
        cursor.execute("DROP TABLE IF EXISTS num_fonts")

        sql_fonts = '''CREATE TABLE fonts ( 
                char_chi VARCHAR(5) NOT NULL, 
                feature1 VARCHAR(40) NOT NULL,
                feature2 VARCHAR(20) NOT NULL,
                feature3 VARCHAR(20) NOT NULL,
                feature4 VARCHAR(20) NOT NULL,
                feature5 VARCHAR(20) NOT NULL)DEFAULT CHARSET=utf8'''

        sql_numfonts = ''' CREATE TABLE num_fonts (
                    char_chi VARCHAR (5) NOT NULL,
                    feature1 VARCHAR(40) NOT NULL,
                    feature2 VARCHAR(20) NOT NULL,
                    feature3 VARCHAR(20) NOT NULL,
                    feature4 VARCHAR(20) NOT NULL,
                    feature5 VARCHAR(20) NOT NULL)'''

        # 创建Sutdent        cursor.execute(sql_fonts)
       cursor.execute(sql_numfonts)

        print '建表成功!'

    def insertdb(self, db):
        # 使用cursor()方法获取操作游标
        cursor = db.cursor()

        #  打开文件
        f = open('num_value.txt', 'r')
        while True:
            line = f.readline()
            if line == '':
                break
            else:
                # 处理每行
                line = line.strip('\n')
                line = line.split(',')
                char_chi = line[0]
                feature1 = line[1] + line[2] + line[3] + line[4]
                l = line[5].split(' ')
                feature2 = l[0]
                feature3 = l[1]
                feature4 = l[2]
                feature5 = l[3]

                try:
                    # 执行sql语句
                    cursor.execute("INSERT INTO num_fonts VALUES(%s,%s,%s,%s,%s,%s)",
                                   [char_chi, feature1, feature2, feature3, feature4, feature5])
                except:
                    # Rollback in case there is any error
                    print '插入数据失败!'

        f.close()
        cursor.close()
        db.commit()
        print '插入数据成功!'

    def querydb(self, db, feature):
        # 使用cursor()方法获取操作游标
        cursor = db.cursor()

        fs = feature.split(',')
        f1 = fs[0] + fs[1] + fs[2] + fs[3]
        f = fs[4].split(' ')
        f2 = f[0]
        f3 = f[1]
        f3 = f[2]
        f4 = f[3]
        sql = "SELECT char_chi FROM num_fonts where feature1 = '%s' "
        try:
            # 执行SQL语句
            cursor.execute(sql % f1)
            # 获取所有记录列表
            results = cursor.fetchall()
            if len(results) > 0:
                return results[0][0]
            else:
                return 'X'
        except:
            print "Error: unable to fecth data"

    def closedb(self, db):
        db.close()

需要注意的点:
1、若数据库需要保存中文,需要在建表语句最后加上DEFAULT CHARSET=utf8
2、注意查看插入或查询数据为已定义的变量时的写法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值