‘壹’ 有谁能通俗点的给我讲解下ORM是什么吗网上查的一大把专业理论名词。看了一头雾水。有谁能通俗点将吗
我用c#的说法给你解释一下:
在ORM出现之前,.NET语言对数据库操作都是使用ADO.NET
就是手动打开关闭sqlConnection ,然后手动拼接SQL语句,如:
select*fromstudent;
直接使用SQL语句虽然能带来极大的性能体验,但是也会有很多问题:
SQL语句的错误不好检查(因为SQL语句全是字符串,无法做语法检查)
接收到的数据全是弱类型,如果你想要使用基本都要做类型转换
ORM就是用本地的model代替数据库里面的各种表,你直接通过操作dbContext就可以获得数据库中的数据,然后它还使用一些技术把ADO.NET中一些麻烦的事给解决了
在EF中使用LINQ来编写数据库操作语法,ORM会自己将LINQ语句翻译为对应的SQL语句,然后将返回的数据自动做类型转换生成对应的model,就像这样:
varstudentList=dbContext.Student.ToList();
使用ORM后既有语法检查,又省略了很多以前繁琐的操作,可以让开发人员将更多的注意力集中到业务的处理上,提高他们的效率
同时一些好的ORM还会有缓存处理、合并执行SQL等其它功能;它绝对是现代中小型系统的开发必备
‘贰’ 不用orm,直接用sql,好吗
没啥不好的,orm的底层也都是sql,orm的目的是将数据对象化,利用面向对象的特点完成数据操作
‘叁’ ORM是否必要
ORM可以防止注入作为附加功能,SQL也可以带来反注入机制。ORM的主要作用是将数据库域的对象映射到面向对象的域中,因为开发人员更熟悉它们。
开发人员在开发时更倾向于用对象的方式思考
通过ORM,抽象被构造并输入到应用程序代码中,这样就可以在代码中直接实现许多必要的约束,这有助于正确性。‘肆’ 在python上怎么使用sql
第一种办法:
#导入SQLite驱动:
>>>importsqlite3
#连接到SQLite数据库
#数据库文件是test.db
#如果文件不存在,会自动在当前目录创建:
>>>conn=sqlite3.connect('test.db')
#创建一个Cursor:
>>>cursor=conn.cursor()
#执行一条SQL语句,创建user表:
>>>cursor.execute('createtableuser(idvarchar(20)primarykey,namevarchar(20))')
<sqlite3.Cursorobjectat0x10f8aa260>
#继续执行一条SQL语句,插入一条记录:
>>>cursor.execute('insertintouser(id,name)values('1','Michael')')
<sqlite3.Cursorobjectat0x10f8aa260>
#通过rowcount获得插入的行数:
>>>cursor.rowcount
1
#关闭Cursor:
>>>cursor.close()
#提交事务:
>>>conn.commit()
#关闭Connection:
>>>conn.close()
第二种办法:
使用 SQLalchemy 等ORM 的库。