新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Python教程:python簡單實現(xiàn)了一個ORM
(推薦操作系統(tǒng):windows7系統(tǒng)、python 3.9.1、DELL G3電腦。)

創(chuàng)新互聯(lián)建站專注于廣漢網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供廣漢營銷型網(wǎng)站建設(shè),廣漢網(wǎng)站制作、廣漢網(wǎng)頁設(shè)計、廣漢網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造廣漢網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供廣漢網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
1、定義Field類,它負(fù)責(zé)保存數(shù)據(jù)庫表的字段名和字段的類型:
class Field(object): def __init__(self, name, column_type): self.name = name self.column_type = column_type
2、在Field的基礎(chǔ)上,進一步定義各種具體類型的Field,比如StringField,IntegerField等等:
class StringField(Field): def __init__(self, name, max_length): super(StringField, self).__init__(name, 'varchar(%d)' % max_length) class IntegerField(Field): def __init__(self, name): super(IntegerField, self).__init__(name, 'int')
3、下一步,就是編寫最復(fù)雜的ModelMetaclass了:
class ModelMetaclass(type):
def __new__(cls, name, bases, attrs):
if name == 'Model':
return type.__new__(cls, name, bases, attrs)
print('Found model: %s' % name)
mappings = dict()
for k, v in attrs.items():
if isinstance(v, Field):
mappings[k] = v
for k in mappings.keys():
attrs.pop(k)
attrs['__mappings__'] = mappings
attrs['__table__'] = name
return type.__new__(cls, name, bases, attrs)4、創(chuàng)建User類,并調(diào)用save方法,保存:
class User(Model):
id = IntegerField('id')
name = StringField('username', max_length=48)
email = StringField('email', max_length=128)
password = StringField('password', max_length=24)
# 創(chuàng)建一個實例:
u = User(id=12345, name='xiaoming', email='xiaoming@xiaomi.com', password='test')
# 保存到數(shù)據(jù)庫:
u.save()以上就是python簡單實現(xiàn)了一個orm,希望能對大家有所幫助。更多Python學(xué)習(xí)指路:創(chuàng)新互聯(lián)python教程
分享文章:創(chuàng)新互聯(lián)Python教程:python簡單實現(xiàn)了一個ORM
URL分享:http://m.5511xx.com/article/dhoppgh.html


咨詢
建站咨詢
