有谁熟悉wordsunny ps,用过的请给个意见吧,万分感谢。

Python的Django框架中的数据库配置指南
投稿:goldensun
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Python的Django框架中的数据库配置指南,文中举了Python内置的SQLite的示例,需要的朋友可以参考下
记住这些理念之后,让我们来开始 Django 数据库层的探索。 首先,我们需要做些初始配置;我们需要告诉Django使用什么数据库以及如何连接数据库。
我们假定你已经完成了数据库服务器的安装和激活,并且已经在其中创建了数据库(例如,用 CREATE DATABASE 语句)。 如果你使用SQLite,不需要这步安装,因为SQLite使用文件系统上的独立文件来存储数据。
象前面章节提到的 TEMPLATE_DIRS 一样,数据库配置也是在Django的配置文件里,缺省 是 settings.py 。 打开这个文件并查找数据库配置:
DATABASE_ENGINE = ''
DATABASE_NAME = ''
DATABASE_USER = ''
DATABASE_PASSWORD = ''
DATABASE_HOST = ''
DATABASE_PORT = ''
配置纲要如下。
&&& DATABASE_ENGINE 告诉Django使用哪个数据库引擎。 如果你在 Django 中使用数据库, DATABASE_ENGINE 必须是表中所列出的值。
&&& 要注意的是无论选择使用哪个数据库服务器,都必须下载和安装对应的数据库适配器。 访问表 5-1 中“所需适配器”一栏中的链接,可通过互联网免费获取这些适配器。 如果你使用Linux,你的发布包管理系统会提供合适的包。 比如说查找`` python-postgresql`` 或者`` python-psycopg`` 的软件包。
&&& 配置示例:
DATABASE_ENGINE = 'postgresql_psycopg2'
&&& DATABASE_NAME 将数据库名称告知 Django 。 例如:
DATABASE_NAME = 'mydb'
&&& 如果使用 SQLite,请对数据库文件指定完整的文件系统路径。 例如:
DATABASE_NAME = '/home/django/mydata.db'
&&& 在这个例子中,我们将SQLite数据库放在/home/django目录下,你可以任意选用最合适你的目录。
&&& DATABASE_USER 告诉 Django 用哪个用户连接数据库。 例如: 如果用SQLite,空白即可。
&&& DATABASE_PASSWORD 告诉Django连接用户的密码。 SQLite 用空密码即可。
&&& DATABASE_HOST 告诉 Django 连接哪一台主机的数据库服务器。 如果数据库与 Django 安装于同一台计算机(即本机),可将此项保留空白。 如果你使用SQLite,此项留空。
&&& 此处的 MySQL 是一个特例。 如果使用的是 MySQL 且该项设置值由斜杠( '/' )开头,MySQL 将通过 Unix socket 来连接指定的套接字,例如:
DATABASE_HOST = '/var/run/mysql'
一旦在输入了那些设置并保存之后应当测试一下你的配置。 我们可以在`` mysite`` 项目目录下执行上章所提到的`` python manage.py shell`` 来进行测试。 (我们上一章提到过在,`` manager.py shell`` 命令是以正确Django配置启用Python交互解释器的一种方法。 这个方法在这里是很有必要的,因为Django需要知道加载哪个配置文件来获取数据库连接信息。)
输入下面这些命令来测试你的数据库配置:
&&& from django.db import connection
&&& cursor = connection.cursor()
如果没有显示什么错误信息,那么你的数据库配置是正确的。 否则,你就得 查看错误信息来纠正错误。 下表是一些常见错误。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具使用thikphp框架的,一个项目里面有多个文件夹,html页面放在哪个文件夹里,和Action文件夹里的方法怎么调用,特别是在调用时的路径有关问题,尽量详细 - PHP当前位置:& &&&使用thikphp框架的,一个项目里面有多个文件夹,htm使用thikphp框架的,一个项目里面有多个文件夹,html页面放在哪个文件夹里,和Action文件夹里的方法怎么调用,特别是在调用时的路径有关问题,尽量详细&&网友分享于:&&浏览:22次使用thikphp框架的,一个项目里面有多个文件夹,html页面放在哪个文件夹里,和Action文件夹里的方法如何调用,特别是在调用时的路径问题,尽量详细主要是一个项目里html页面放在哪个文件夹里,在调用action里的方法时如何调用,出现的问题都是路径不对------解决方案--------------------
吃人家的饭,就要受人家管生成的项目目录结构和系统目录类似,包括:Common &项目公共文件目录,一般放置项目的公共函数 &Conf &项目配置目录,项目所有的配置文件都放在这里 &Lang &项目语言包目录(可选 如果不需要多语言支持 可删除) &Lib &项目类库目录,通常包括Action和Model子目录 &Tpl &项目模板目录,支持模板主题 &Runtime &项目运行时目录,包括Cache(模板缓存)、Temp(数据缓存)、Data(数据目录)和Logs(日志文件)子目录,如果存在分组的话,则首先是分组目录。 &
------解决方案--------------------默认是放在tpl下面的default下面,你当前action名字是什么就什么文件夹下面的当前方法名字.html
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有使用SSM框架搭建Web服务器实现登录功能(Spring+SpringMVC+Mybatis)_Linux编程_Linux公社-Linux系统门户网站
你好,游客
使用SSM框架搭建Web服务器实现登录功能(Spring+SpringMVC+Mybatis)
来源:Linux社区&
作者:小康子
初学Java EE,虽然知道使用框架会使开发更加便捷高效,但是对于初学者来说,感到使用框架比较迷惑,尤其是各种jar包的引用、各种框架的配置、注解的使用等等。
最好的学习方法就是实践,于是下载了一个现成的DEMO,通过简单的修改先成功在自己电脑上跑起来,然后再逐个文件进行分析学习,最终才能从总体的高度上掌握框架的运行机制和配置方法,这样才能在实际运用中灵活配置,不会再局限于示例框架中。
SSM框架搭建流程
上面链接总结的流程很好,但是该流程没有加入DAO这一层,经过分析本项目源码,流程应该是这样的:
database&&Entity.java&&mapper.xml&&Mapper.java&&Dao.java&&DaoImpl.java&&Service.java&&ServiceImpl.java&&Controller.java&&login.jsp
根据需要建立数据库、数据表、字段;
根据表中字段建立实体类;
在Mapper中实现对数据库的增删改查操作;
设计DAO(data access object)数据操作对象接口;
设计Service,通过DAO获取对象,然后进行业务逻辑实现;
设计控制层Controller,用于从页面获取请求,调用Service处理并将处理结果返回给页面。
根据上面所列,下面就按照这个流程进行设计。
数据库设计
使用MySQL数据库:
建立数据库 DB_TEST
CREATE DATABASE DB_TEST;
建立用户表 T_USER
CREATE TABLE T_USER (
ID INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
USERNAME VARCHAR(16) NOT NULL,
PASSWORD VARCHAR(16) NOT NULL
插入一条用户信息
INSERT INTO T_USER (USERNAME,PASSWORD) VALUES ("admin","123");
建立USER实体类
public class User {
private int
public int getId() {
public void setId(int id) {
public String getUsername() {
public void setUsername(String username) {
this.username =
public String getPassword() {
public void setPassword(String password) {
this.password =
Mapper实现增删改查
UserMapper接口,定义通过用户名获取用户对象的方法
public interface UserMapper {
public User getUserByName(String username);
usermapper.xml,用于操作数据库,实现接口中的方法
namespace="com.crm.mapper.UserMapper"&
type="com.crm.entity.User" id="userMap"&
property="id" column="id" /&
property="username" column="username" /&
property="password" column="password" /&
id="getUserByName" parameterType="string" resultMap="userMap"&
select * from T_USER where username = #{username}
DAO 数据操作对象
DAO接口 UserDao.java
public interface UserDao {
public User findUserByName(String username);
DAO接口实现 UserDaoImpl.java
@Repository对应数据访问层Bean
@Repository(value=&userDao&)注解是告诉Spring,让Spring创建一个名字叫&userDao&的UserDaoImpl实例。
当Service需要使用Spring创建的名为&userDao&的UserDaoImpl实例时, 就可以使用@Resource(name =&userDao&)注解告诉Spring,Spring把创建好的userDao注入给Service即可。
@Repository("userDao")
public class UserDaoImpl implements UserDao {
@Resource(name = "userMapper")
private UserMapper userM
public User findUserByName(String username) {
return userMapper.getUserByName(username);
业务层 Service
业务层接口 UserService.java
public interface UserService {
public User checkLogin(String username, String password);
业务层接口实现类 UserServiceImpl.java
@Service对应的是业务层Bean
这样当Action需要使用UserServiceImpl的的实例时,就可以由Spring创建好的&userService&注入给Action:在Action只需要声明一个名字叫&userService&的变量来接收由Spring注入的&userService&即可
@Service("userService")
public class UserServiceImpl implements UserService {
private UserDao userD
public User checkLogin(String username, String password) {
User user = userDao.findUserByName(username);
if (user != null && user.getPassword().equals(password)) {
return null;
控制层 Controller
@Controller对应表现层的Bean,也就是Action
注意:如果@Controller不指定其value【@Controller】,则默认的bean名字为这个类的类名首字母小写,如果指定value【@Controller(value=&UserAction&)】或者【@Controller(&UserAction&)】,则使用value作为bean的名字。
@Scope(&prototype&)表示将Action的范围声明为原型
可以利用容器的scope=&prototype&来保证每一个请求有一个单独的Action来处理,避免struts中Action的线程安全问题。
spring 默认scope 是单例模式(scope=&singleton&),这样只会创建一个Action对象,每次访问都是同一Action对象,数据不安全。
struts2 是要求每次次访问都对应不同的Action,scope=&prototype& 可以保证当有请求的时候都创建一个Action对象
@RequestMapping(&/user&)
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
本项目中,该Controller类RequestMapping(&user&) 该Controller类的login方法RequestMapping(&login&) 所以登录页面中用户登录的 action=&/ssm/user/login&
@Controller
@Scope(value="prototype")
@RequestMapping("/user")
public class UserController {
private UserService userS
@RequestMapping(value="/login",method=RequestMethod.POST)
public String login(User user,Model model) throws Exception {
user=userService.checkLogin(user.getUsername(), user.getPassword());
if(user!=null){
model.addAttribute(user);
return "welcome";
return "fail";
xmlns="http://www.w3.org/1999/xhtml"&
http-equiv="Content-Type" content="text/ charset=utf-8" /&
&用户登录&
action="/ssm/user/login" method="post" id="myform"&
type="text" id="username" name="username"/&
type="password" id="password" name="password"/&
type="submit" value="提交" id="login" /&
DEMO工程中的所有配置文件
applicationContext.xml
这个文件是Spring公共配置文件,下面分块进行解析。
数据库配置文件database.properties的引入
id="property"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&
name="locations"&
&classpath:database.properties&
数据库连接池的配置
数据库连接池可以让服务器预先与数据库建立部分连接,存入内存中,以减少连接数据库的耗时操作。 此处定义使用C3P0连接池的数据源。
id="dataSource" class="com.mchange.boPooledDataSource"
destroy-method="close"&
name="driverClass"&
&${mysql.driver_class}&
name="jdbcUrl"&
&${mysql.connection.url}&
name="user"&
&${mysql.connection.username}&
name="password"&
&${mysql.connection.password}&
name="maxPoolSize"&
name="minPoolSize"&
name="initialPoolSize"&
name="maxIdleTime"&
自动扫描配置
使用& context:component-scan&标签后,spring可以自动去扫描base-pack下面或者子包下面的java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类注册为bean
base-package="com.crm.*"&
type="annotation" expression="org.springframework.stereotype.Controller" /&
集成Mybatis
SqlSessionFactoryBean是一个工厂bean,它的作用就是解析配置(数据源、别名等)。
id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"&
name="dataSource" ref="dataSource" /&
name="configLocation" value="classpath:mybatis.xml" /&
name="mapperLocations"&
&classpath:com/crm/mapper/*.xml&
Mapper扫描配置
dao需要配置,如果数量大不适合一个个配置,需要使用mapper自动扫描来批量进行配置。
class="org.mybatis.spring.mapper.MapperScannerConfigurer"&
name="basePackage" value="com.crm.mapper" /&
Mybatis事务管理配置
&bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&
&property name="dataSource" ref="dataSource" /&
数据库配置文件database.properties
mysql.driver_class=com.mysql.jdbc.Driver
mysql.connection.url=jdbc:mysql://localhost:3306/DB_TEST
mysql.connection.username=root
mysql.connection.password=root
日志管理文件 log4j.properties
此处省略,入门阶段暂不考虑这么高端的日志用法。
Mybatis配置文件
通过使用别名,可以缩短类名的长度,但是只能在配置文件中使用。
type="com.crm.entity.User" alias="user" /&
web配置文件
此配置文件注释比较清楚,就不单独解析了。
&webAppRootKey&
&crm.root&
&log4jConfigLocation&
&classpath:log4j.properties&
&log4jRefreshInterval&
&org.springframework.web.util.Log4jConfigListener&
&contextConfigLocation&
&classpath*:springContext/*Context.xml&
&org.springframework.web.context.ContextLoaderListener&
org.springframework.web.util.IntrospectorCleanupListener
&springmvc&
&org.springframework.web.servlet.DispatcherServlet&
&contextConfigLocation&
&/WEB-INF/springmvc.xml&
&springmvc&
&characterEncodingFilter&
&org.springframework.web.filter.CharacterEncodingFilter&
&encoding&
&characterEncodingFilter&
&login.jsp&
springmvc配置文件
之前扫描专门忽略了Controller,在此处扫描。
例如在Controller类中常有类似return welcome这样的语句
其实完整的应该是return WEB-INF/pages/welcome.jsp
base-package="com.crm.controller"/&
location="/img/" mapping="/img/**"/&
location="/js/" mapping="/js/**"/&
location="/common/" mapping="/common/**"/&
id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /&
id="handlerAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /&
id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"&
name="prefix" value="/WEB-INF/pages/"&&
name="suffix" value=".jsp"&&
至此基本内容已经全部完了,项目可以轻松跑起来了。
但是在学习过程中,发现这些框架真的是太强大了,不知道什么时候才能掌握更多,目前仅仅是会用最基本的皮毛而已。
SpringMVC总结篇&
Spring+SpringMVC企业快速开发架构搭建&
SpringMVC的乱码处理&
Spring MVC+Spring3+Hibernate4开发环境搭建 &
Spring MVC整合Freemarker基于注解方式 &
基于注解的Spring MVC简单介绍
SpringMVC详细示例实战教程
Spring MVC 框架搭建及详解
SpringMVC 异常处理&
本文永久更新链接地址:
相关资讯 & & &
& (01月29日)
& (01月18日)
& (02月04日)
& (01月18日)
& (01月17日)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款}

我要回帖

更多关于 wordsunny 寄托 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信