一.python连接mysql

from sqlalchemy import create_engine

# 数据库数据
HOSTNAME = '127.0.0.1' # linux本地
PORT = ''
DATABASE = 'mydb'
USERNAME = 'admin'
PASSWORD = 'Root110qwe' # 数据连接url
db_url = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(
USERNAME,
PASSWORD,
HOSTNAME,
PORT,
DATABASE
) # 连接到mysql需要用到pymysql
engine = create_engine(db_url) # 链接数据库 # 建表需要 创建Modle的 Base类
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base(engine) # 处理表的数据需要 创建会话
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(engine)
session = Session() # 测试连接
if __name__ == '__main__':
connection = engine.connect()
result = connection.execute('select 1')
print(result.fetchone())

二.建表 需要 在连接时创建一个Base类

# 创建Modle的Base类u
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base(engine)

三.建表

通过python的 类 建表,这个类需要继承Base类 (依靠Base类将表和python的类连接起来

  *  需要继承Base类

from datetime import datetime
from sqlalchemy import Column,Integer,String,DateTime
from connect import Base # 把数据库的表映射成python的类(继承Base类) 用python中的类(继承Base类)来表示mysql的表
class User(Base):
__tablename__ = 'user'
id = Column(Integer,primary_key=True,autoincrement=True)
username = Column(String(20),nullable=False)
password = Column(String(50))
creatime = Column(DateTime,default=datetime.now()) def __repr__(self): # 重写repr方法
return "<User(id=%s,username=%s,password=%s,createtime=%s)>" %(
self.id,
self.username,
self.password,
self.creatime
)
if __name__ == '__main__':
Base.metadata.create_all()

四.给建的表添加属性(增删改查)

  * 需要创建会话

# 处理表的数据需要 在连接时 创建会话
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(engine)
session = Session()

————————————————————————————————————————————————————————————————————————————————————

增加属性:

from connect import session        
from user_module import User # 增加函数
def add_user():
person = User(username='budong',password='qwe123')
session.add(person) # 添加单条数据
session.add_all( # 添加多条数据
[
User(username='tj',password='123qwe1'),
User(username='tj1',password='123qwe2'),
User(username='tj2',password='123qwe3')
]
)
session.commit() # 处理数据必须提交事务 增加的属性结果

+----+----------+----------+---------------------+
| id | username | password | creatime |
+----+----------+----------+---------------------+
| 1 | budong | qwe123 | 2018-03-03 15:46:31 |
| 2 | tj | 123qwe1 | 2018-03-03 15:46:31 |
| 3 | tj1 | 123qwe2 | 2018-03-03 15:46:31 |
| 4 | tj2 | 123qwe3 | 2018-03-03 15:46:31 |
+----+----------+----------+---------------------+


def search_user():
rows = session.query(User).all() # all所有的数据 .first() 查询第一条数据
print(rows)            # 这儿打印的是repr,所以需要在建表的时候重写repr方法 查询的数据结果  

[<User(id=1,username=budong,password=qwe123,createtime=2018-03-03 16:14:35)>, <User(id=2,username=tj,password=123qwe1,createtime=2018-03-03 16:14:35)>, <User(id=3,username=tj1,password=123qwe2,createtime=2018-03-03 16:14:35)>, <User(id=4,username=tj2,password=123qwe3,createtime=2018-03-03 16:14:35)>]

 
def update_user():
session.query(User).filter(User.username=='tj1').update({User.password:'',User.username:'haha'})
session.commit() 修改的数据结果 --修改了tj1 = haha,password=88888

+----+----------+----------+---------------------+
| id | username | password | creatime |
+----+----------+----------+---------------------+
| 1 | budong | qwe123    | 2018-03-03 16:14:35 |
| 2 | tj | 123qwe1 | 2018-03-03 16:14:35 |
| 3 | haha | 88888 | 2018-03-03 16:14:35 |
| 4 | tj2 | 123qwe3 | 2018-03-03 16:14:35 |
+----+----------+----------+---------------------+

 

a

def delete_user():
row =session.query(User).filter(User.id==1)[0] # 相当于 .first()
session.delete(row)
session.commit() 删除数据的结果 --删除了第一条数据

+----+----------+----------+---------------------+
| id | username | password | creatime |
+----+----------+----------+---------------------+
| 2 | tj | 123qwe1 | 2018-03-03 16:14:35 |
| 3 | haha | 88888 | 2018-03-03 16:14:35 |
| 4 | tj2 | 123qwe3 | 2018-03-03 16:14:35 |
+----+----------+----------+---------------------+

if __name__ == '__main__':
add_user()
search_user()
pdate_user()
delete_user()

通过python给mysql建表的更多相关文章

  1. 基于表的数据字典构造MySQL建表语句

    表的数据字典格式如下: 如果手动写MySQL建表语句,确认麻烦,还不能保证书写一定正确. 写了个Perl脚本,可快速构造MySQL脚本语句. 脚本如下: #!/usr/bin/perl use str ...

  2. mysql建表出现Timestamp错误

    mysql建表时如果有两个或以上的字段为Timestamp,那么可能会出现如下错误: Incorrect table definition; there can be only one TIMESTA ...

  3. MySql 建表出现的问题:[ERR] 1064 - You have an error in your SQL syntax; check the manual.......

    使用 MySql 建表出现的问题 在使用 Navicat Premium 运行 sql 语句进行建表时,MySQL 报错如下: 建表语句: DROP DATABASE IF EXISTS javawe ...

  4. MySQL 建表语句 create table 中的列定义

    MySQL 建表语句 create table 中的列定义: column_definition: data_type [NOT NULL | NULL] [DEFAULT default_value ...

  5. 三种常用的MySQL建表语句

    MySQL建表语句是最基础的SQL语句之一,下面就为您介绍最常用的三种MySQL建表语句,如果您对MySQL建表语句方面感兴趣的话,不妨一看. 1.最简单的: CREATE TABLE t1(    ...

  6. 【转载】mysql建表date类型不能设置默认值

    如题,mysql建表date类型的不能设置一个默认值,比如我这样: CREATE TABLE `new_table` ( `biryhday` datetime NULL DEFAULT '1996- ...

  7. python 3 mysql 单表查询

    python 3 mysql 单表查询 1.准备表 company.employee 员工id id int 姓名 emp_name varchar 性别 sex enum 年龄 age int 入职 ...

  8. Mysql建表通用写法

    Mysql建表通用写法 CREATE TABLE IF NOT EXISTS stu( id ) PRIMARY KEY AUTO_INCREMENT,//主键 自增 stuname ) NOT NU ...

  9. 【记录】Mysql 建表注意事项

    博主最近打算搭建商城,由于之前对建表只有很浅显的理解,没有太过深入了解,建表过程中遇到一些问题,现记录如下, 如有问题请各位留言指正,感激不尽: 建表时设置如何设置联合主键?如下标红处: CREATE ...

随机推荐

  1. opencv2.4.10与VS2013的环境配置

    前言 项目几乎都是图像相关的,一般都会用到opencv开源库,就涉及到windows下opencv的环境配置问题,本文对此进行介绍. 环境 系统环境:win10_x64(其他windows系统类似); ...

  2. HTML结构组成

    1. 文档的类型声明 <!doctype html> h5的声明方式 作用 : 告诉浏览器当前使用的HTML版本,以便浏览器能正确解析HTML标签和渲染样式 书写位置 : 文档最开始位置 ...

  3. Unity 3D中 Ulua-UGUI简单的Demo——热更新的具体流程、使用说明

    Ulua热更新具体流程.使用说明 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 -- 未完 1 -- ...

  4. Python中if __name__ == "__main__"详解

       比如你编写一个test.py文件,一个python文件就可以看作是一个python的模块,这个python模块(.py文件)有两种使用方式:直接运行使用和作为模块被其他模块调用.   解释下__ ...

  5. BZOJ3757: 苹果树【树上莫队】

    Description ​ 神犇家门口种了一棵苹果树.苹果树作为一棵树,当然是呈树状结构,每根树枝连接两个苹果,每个苹果都可以沿着一条由树枝构成的路径连到树根,而且这样的路径只存在一条.由于这棵苹果树 ...

  6. SQL SERVER 2008R2 执行大脚本文件时,管理工具提示“内存不足”的解决方法

    项目需求:当我把服务器上的数据库导出为SQL脚本时,在本地新建数据库,再导入执行SQL文件时报错,因为SQL文件过大,导致出现如下报错 如下图所示: ========================= ...

  7. 关于凑数问题的dfs

    https://www.nowcoder.com/acm/contest/42/F 首先由于是单一解问题,所以使用返回值类型为bool的dfs 然后为了保证dfs的效率性,应该把加数dfs放在前面,不 ...

  8. iview admin 发布到IIS

    公司项目打算做前后端分离,选型最后选了vue+webapi的模式.于是在网上找到了iview及iview admin 这个后台管理模板,里面东西很完善.有这么好的东西,而且MIT协议,项目本身也比较简 ...

  9. VS2010 C++编译报错LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

    查找是否有两个cvtres.exe.一个是C:\Program Files(x86)\Microsoft Visual Studio 10.0\vc\bin\cvtres.exe, 另一个是C:\Wi ...

  10. Linux中的其他命令

    1.  修改文件的所有者 chown 用户名  文件名 2. 修改文件所属组 chgrp 组名  文件名 3. 创建用户,创建组,将用户添加到组中等 修改film文件夹的所有者和所属组 修改film文 ...