您的位置:首页 > 编程语言 > Python开发

Django从零开始搭建一个相册网站--5.Python操作数据库

2017-04-28 11:58 821 查看
由于相片已经存在,所以需要安装文件目录把相应的数据写入数据库:



beibei:classModels

百日照:dirModels

psb?.jpg:fileModels

创建连接:

conn = MySQLdb.connect(
host='10.5.209.13',
port=3306,
user='root',
passwd='admin888',
db='cilife',
charset='utf8',
)

cur = conn.cursor()


# 创建数据表
# cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")

# 插入一条数据
# cur.execute("insert into student values('2','Tom','3 year 2 class','9')")

# 修改查询条件的数据
# cur.execute("update student set class='3 year 1 class' where name = 'Tom'")

# 删除查询条件的数据
# cur.execute("delete from student where age='9'")


需要注意的是,添加操作中的value值必须是一个数组/集合,即如果写成:

"insert into cilife_classmodels(class_name) values(%s)", classname

则会报错

完整代码:

# _*_coding: utf-8 _*_

import MySQLdb
import os
import time

sdir = 'E:\\软件测试\\Python\\program\\DjangoProgram\\myweb\\cilife\\static\\resources'
conn = MySQLdb.connect( host='10.5.209.13', port=3306, user='root', passwd='admin888', db='cilife', charset='utf8', ) cur = conn.cursor()

def showdir(dir_path):
# 获取类别名称
class_names = os.listdir(dir_path)
for class_name in class_names:
print('class_name:', class_name)
# 查询类别是否存在
c = cur.execute("SELECT id FROM cilife_classmodels WHERE class_name LIKE '%s'" % class_name)
# 如果不存在改类别则添加
if c == 0:
value = [class_name]
cur.execute("insert into cilife_classmodels(class_name) values(%s)", value)
conn.commit()
# 添加完成后查询类别ID
cur.execute("SELECT id FROM cilife_classmodels WHERE class_name LIKE '%s'" % class_name)
# 得到类别ID
cid = cur.fetchone()[0]
# 拼接类别目录
class_dir = os.path.join(dir_path, class_name)
# 遍历类别目录
for dirpath, dirnames, filenames in os.walk(class_dir):
dirname = str(dirpath).split('\\')[-1].encode('utf-8').decode()
if dirname != class_name:
print('dirname:', dirname)
# 查询子类是否存在
d = cur.execute("SELECT id FROM cilife_dirmodels WHERE dir_name LIKE '%s'" % dirname)
# 如果子类不存在则添加
if d == 0:
t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
value = (cid, dirname, str(t))
cur.execute("insert into cilife_dirmodels(class_id, dir_name, date) values(%s, %s, %s)", value)
conn.commit()
# 添加完成后查询子类ID
cur.execute("SELECT id FROM cilife_dirmodels WHERE dir_name LIKE '%s'" % dirname)
did = cur.fetchone()[0]
print('did:', did)
# 遍历子类目录获取文件
for file in filenames:
# 查询文件是否已经添加进数据库
f = cur.execute("SELECT id FROM cilife_filemodels WHERE file_name LIKE '%s'" % file)
# 不存在则添加
if f == 0:
values = (did, file, '懒人,快说点什么!')
# print('file:', file)
cur.execute("insert into cilife_filemodels(dir_id, file_name, file_context) "
"values(%s, %s, %s)", values)
conn.commit()

showdir(sdir)
cur.close()
conn.close()


运行后结果:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python mysql