Python总结之 orm初探

编程入门 行业动态 更新时间:2024-10-25 03:19:40

<a href=https://www.elefans.com/category/jswz/34/1770869.html style=Python总结之 orm初探"/>

Python总结之 orm初探

orm的作用

听说可以不用写sql语句就可以实现对数据库的操作(当然这也是orm的作用),于是就有了这篇文章...

下面是简单的代码

from pymysql import connectclass Field(object):def __init__(self, args):self.args = argsclass ChangeClass(type):def __new__(cls, class_name, super_name, attrs):print(attrs)sql_dict = dict()for key, value in attrs.items():if isinstance(value, Field):sql_dict[key] = value.argsprint(sql_dict)attrs['sql_dict'] = sql_dictattrs['table_name'] = class_name.lower()return type.__new__(cls, class_name, super_name, attrs)class Table(object, metaclass=ChangeClass):# 把table设置为父类# # 让此字典自动生成# # sql_dict = {"id": "int unsigned", "name": "varchar(30)"}# # 这里是属性,写成键值的形式# table_name = "kaka"# # 写成元祖方便区别写入元素,方便查找# id = ("int unsigned",)# name = ("varchar(30)",)# # sql_dict = {"id": id, "name": name}def create_table(self):# 1 连接数据库# 2 操作数据库# 3 关闭# 连接数据库conn = connect(host='localhost', port=3306, database='zxc', user='root', password='mysql', charset='utf8')# 获取游标cs1 = conn.cursor()# 创建字典保存键值关系sql_list = list()# 获取字典内的值for key, values in self.sql_dict.items():sql_list.append("%s %s" % (key, values))# sql_list.append(key, values)# user(id int unsigned, name varchar(20))# 操作数据库sql = """ create table if not exists %s(%s) """ % (self.table_name, ",".join(sql_list))print(sql)cs1.execute(sql)# 提交!!!conn.commit()# 获取数据# data = cs1.fetchall()# 关闭cs1.close()conn.close()def insert(self, **kwargs):print(kwargs)# (2.创建列表,我们想要得到的值在调用函数时输入,此时分析一下,输入方式是键值对,所以用**kwargs,接下来就是取出对应的键与值了)list_key = list()list_value = list()# (3.把取出的值放进对应的列表里,这里要注意在数据库中的值都是以)for key, value in kwargs.items():list_key.append(key)list_value.append(""" '%s' """ % str(value))  #这里会出错sequence item 0: expected str instance, int found在另一篇文章会说#list_value.append(value)# 连接数据库conn = connect(host='localhost', port=3306, database='zxc', user='root', password='mysql', charset='utf8')# 获取游标cs1 = conn.cursor()# 操作数据库(1.清楚要获得什么类型的内容-->答案是列表!ok,我们去创建列表)sql = """insert into %s(%s) values(%s);""" % (self.table_name, ",".join(list_key), ",".join(list_value))print(sql)rows = cs1.execute(sql)# 提交!!!conn.commit()# 关闭cs1.close()conn.close()
# #################################框架################################################################class Student(Table):name = Field('varchar(30)')num = Field('int')# class User(Table):
#     name = ("varchar(30)",)
#     age = ("int",)def main():student = Student()student.create_table()student.insert(name='zxc', num=22)if __name__ == '__main__':main()

更多推荐

Python总结之 orm初探

本文发布于:2023-07-28 18:08:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1270706.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Python   orm

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!