通过python给mysql建表
一.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建表的更多相关文章
- 基于表的数据字典构造MySQL建表语句
表的数据字典格式如下: 如果手动写MySQL建表语句,确认麻烦,还不能保证书写一定正确. 写了个Perl脚本,可快速构造MySQL脚本语句. 脚本如下: #!/usr/bin/perl use str ...
- mysql建表出现Timestamp错误
mysql建表时如果有两个或以上的字段为Timestamp,那么可能会出现如下错误: Incorrect table definition; there can be only one TIMESTA ...
- MySql 建表出现的问题:[ERR] 1064 - You have an error in your SQL syntax; check the manual.......
使用 MySql 建表出现的问题 在使用 Navicat Premium 运行 sql 语句进行建表时,MySQL 报错如下: 建表语句: DROP DATABASE IF EXISTS javawe ...
- MySQL 建表语句 create table 中的列定义
MySQL 建表语句 create table 中的列定义: column_definition: data_type [NOT NULL | NULL] [DEFAULT default_value ...
- 三种常用的MySQL建表语句
MySQL建表语句是最基础的SQL语句之一,下面就为您介绍最常用的三种MySQL建表语句,如果您对MySQL建表语句方面感兴趣的话,不妨一看. 1.最简单的: CREATE TABLE t1( ...
- 【转载】mysql建表date类型不能设置默认值
如题,mysql建表date类型的不能设置一个默认值,比如我这样: CREATE TABLE `new_table` ( `biryhday` datetime NULL DEFAULT '1996- ...
- python 3 mysql 单表查询
python 3 mysql 单表查询 1.准备表 company.employee 员工id id int 姓名 emp_name varchar 性别 sex enum 年龄 age int 入职 ...
- Mysql建表通用写法
Mysql建表通用写法 CREATE TABLE IF NOT EXISTS stu( id ) PRIMARY KEY AUTO_INCREMENT,//主键 自增 stuname ) NOT NU ...
- 【记录】Mysql 建表注意事项
博主最近打算搭建商城,由于之前对建表只有很浅显的理解,没有太过深入了解,建表过程中遇到一些问题,现记录如下, 如有问题请各位留言指正,感激不尽: 建表时设置如何设置联合主键?如下标红处: CREATE ...
随机推荐
- 《DSP using MATLAB》Problem 3.5
定义为: 如果序列绝对可和,其DTFT就存在.
- 实习第一天:try和catch的使用
package wo;public class wowo{ public static void main(String[] args){ try{ // int i = 1/0; 是没有语法错误的, ...
- 使用lua graphql 模块让openresty 支持graphql api
graphql 是一个很不错的api 查询标准语言,已经有一个lua 的版本支持graphql 项目使用docker&&docker-compose 运行 环境准备 模块安装 lu ...
- Oracle 跨库 查询 复制表数据
在目前绝大部分数据库有分布式查询的需要.下面简单的介绍如何在oracle中配置实现跨库访问. 比如现在有2个数据库服务器,安装了2个数据库.数据库server A和B.现在来实现在A库中访问B的数据库 ...
- sql server 数字字符串的排序
假如我们有这样的数据格式1#XXXXX 20#CCCCC等的一系列数据那么我们如何可以排序出1 ,2,3,4,5,6,7.......这样的数据呢 我们知道整数是可以排序成这样的格式的,但是字符串就不 ...
- 使用 telnet 发邮件
我们都习惯了用邮件客户端软件或者登录到电子邮件站点进行收发邮件,现在尝试一下使用 Windows 自带的 Telnet 程序手工地发送一封简单的邮件,以此来稍微明白关于邮件发送的一些知识. 现在 E- ...
- Linux高级文本处理命令
cut 一.cut命令 功能:cut命令可以从一个文本文件/文本流中提取文本列 语法: cut -d '分割字符' -f fields ##用于有特定分割字符 cut -c 字符区间 ##用于排列整齐 ...
- c++中的流
streambuf类为缓冲区提供内存,并提供了用于填充缓冲区,访问缓冲区,刷新新缓冲区和管理缓冲区内存的类方法. ios_base类表示流的一般特征,如是否可读,是二进制还是文本流等. ios类基于i ...
- SOALog
项目地址 : https://github.com/kelin-xycs/SOALog SOALog 为 SOA 架构 提供一种 松耦合 乐观 的 数据一致性 解决方案,说白了这个组件的功能就是 记 ...
- 使用JMeter代理服务器录制APP脚本
重点:证书的安装,需要将Jmeter安装目录下证书传送到手机,使用手机安装(不要用QQ传送给手机,手机提示无法安装,可使用网盘方式传送,可成功安装证书) (出现该错误时,需安装证书) 简单的配置教程如 ...