python可视化增删查改

阅读: 评论:0

python可视化增删查改

python可视化增删查改

SQLAlchemy

1.环境搭建

安装相应的软件包

2.pymysql用于连接MySQL服务器的一个库

3.sqlalchemy

$ pip install pymysql

$ pip install sqlalchemy

2.连接数据库

从sqlalchemy中导入create_engin,创建引擎建立与数据库的连接。

from sqlalchemy import create_engine

准备连接数据库的数据:

HOSTNAME = '127.0.0.1' # 这里填ip地址

PORT = '3306' # 端口号 mysql一般默认为3306

DATABASE = 'mydb' # 数据库名

USERNAME = 'admin' # 用户名

PASSWORD = 'rootqwe123' # 用户登录密码

DB_URI的格式:

数据库类型+数据库驱动名称://用户名:密码@机器地址:端口号/数据库名?字符编码

DB_URI=mysql+pymysql://:@/?charset=utf8

engine = create_engine(DB_URI)

我们可以尝试着测试一下是否连接上:

print(dir(engine)),当有打印出方法时,表示连接成功。

database_connect.py

from sqlalchemy import create_engine

HOSTNAME = '127.0.0.1' # 这里填ip地址

PORT = '3306'

DATABASE = 'mydb'

USERNAME = 'admin'

PASSWORD = 'Root110qwe'

Db_Uri = 'mysql+pymysql://{}:{}@{}/{}?charset=utf8'.format(USERNAME,PASSWORD,HOSTNAME,DATABASE)

engine = create_engine(Db_Uri)

if __name__=='__main__':

print(dir(engine))

3.创建模型

1.声明映像

对象关系型映射,数据库中的表与python中的类相对应,创建的类必须继承自sqlalchemy中的基类。

使用Declarative方法定义的映射类依据一个基类,这个基类是维系类和数据表关系的目录。

应用通常只需要有一个base的实例。我们通过declarative_base()功能创建一个基类。

在database_connect.py文件中加入下列代码

declarative import declarative_base

Base = declarative_base(engine)

2.创建会话

定义个session会话对象,使用 sessionmaker初始化一个类对象

import sessionmaker

Session = sessionmaker(engine)

session = Session()

3.新建模型

新建一个user模型

新建user_module.py文件

from datetime import datetime

from sqlalchemy import Column,Integer,String,DateTime,Boolean

from database_connect import Base,session

class User(Base):

__tablename__='user'

id = Column(Integer,primary_key=True,autoincrement=True)

username = Column(String(20),nullable=False)

password = Column(String(100))

creatime = Column(DateTime,default&#w)

last_login = Column(DateTime)

_locked = Column(Boolean,default=Falsem,nullable=False)

#---将创建好的user类,映射到数据库的user表中---

在start.py mian函数最后中加入这一行代码

这就是创建好了一个表,我们可以在数据库中查看一下。

4.增删查改

1.增加数据

def add_user():

#添加单个对象

#person = User(username='lethe',password='212121')

#session.add(person)

#在start.py中的main函数中执行添加函数

User().add_user()

#添加多个对象

#把add_user中的代码注释并添加下列代码

session.add_all([User(username='banban', password='1212120'),

User(username='kuku', password='32321')])

#提交才会生效,和命令行有区别

sessionmit()

2.查询数据

#先将前面的User().add_user()注释掉 否者又会添加相同的数据

def search_user():

row = session.query(User).all() # 查询全部数据

print(row)

#再在start.py中的main函数后面添加

User().search_user()

#将search_user()里的内容注释掉 添加下列代码

row = session.query(User).filter_by(id=1).all() # 按id查询

print(row)

row = session.query(User).filter(User.username == 'banban').all() # 按字段查询

print(row)

print(row[0].locked) #查询banban这条信息的locked信息

但其实我们可以在定义user类的时候这么去写

@classmethod

def all(cls):

return session.query(cls).all()

@classmethod

def by_id(cls,id):

return session.query(cls).filter_by(id=id).all()

@classmethod

def by_name(cls,name):

return session.query(cls).filter_by(username=name).all()

@property

def locked(self):

return self._locked

这样在只需要调用类方法就行

print(User.all())

print(User.by_id(1))

print(User.by_name('lethe'))

print(User.by_name('kuku'))

3.更新

def update_user():

row = session.query(User).filter_by(username='lethe').update({User.password:'1010101'})

sessionmit()

4.删除

def delete_user():

row = session.query(User).filter_by(username='banban')[0] #first

print(row)

session.delete(row)

sessionmit()

更新与删除操作过程与前面类似 这里就不一一赘述了

以上就是sqlalchemy的基本知识。

5.pycharm的图形化数据库工具

设置步骤:

点击view-->点击Toll Windows -->点击database

在在pycharm右侧找到database,点开它

点+号-->Data Source--> 选择mysql(我这里是用的mysql,其他数据库也行)

按要求填写对应的项-->点击Test connection 测试一下是否能成功连接(如果这个按钮是灰色的需要先点击左下角的按钮安装插件)

6.附录

start.py

import tornado.httpserver

import tornado.ioloop

import tornado.options

import tornado.web

from user_module import User

from tornado.options import define, options

from database_connect import engine, session

from user_module import Base

define('port', default=9000, help='run port', type=int)

if __name__ == '__main__':

connection = t()

result = ute('select 1')

print(Base)

User().add_user()

# User().search_user()

# User().update_user()

# User().delete_user()

print(User.all())

print(User.by_id(1))

print(User.by_name('lethe'))

print(User.by_name('kuku'))

database_connect.py

from sqlalchemy import create_engine

HOSTNAME = '127.0.0.1' # 指的是linux的ip 因为代码运行在linux上

POST = '3306' # 直接在linux上连接数据库不需要端口转发

DATABASE = 'mydb_test'

USERNAME = 'admin' # 登录的用户

PASSWORD = 'Root110qwe'

db_url = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(

USERNAME,

PASSWORD,

HOSTNAME,

POST,

DATABASE

) # +号两边不能加空格 这里出现了点问题 将这个字符串重新写过后就可以了

engine = create_engine(db_url) # 创建引擎

declarative import declarative_base

Base = declarative_base(engine)

# print(result.fetchone())

import sessionmaker

Session = sessionmaker(engine)

session = Session()

user_module.py

from datetime import datetime

from sqlalchemy import Column, Integer, String, DateTime, Boolean

from database_connect import Base, session # 模块名灰色代表还没有被调用

class User(Base): # 继承Base这个引擎 新建表

__tablename__ = 'user' # 表名

id = Column(Integer, primary_key=True, autoincrement=True)

username = Column(String(20), nullable=False)

password = Column(String(50))

email = Column(String(50))

phone_number = Column(String(20))

id_card = Column(String(30))

createtime = Column(DateTime, default&#w)

_locked = Column(Boolean, default=False, nullable=True)

@classmethod

def all(cls): # 类方法

return session.query(cls).all()

@classmethod

def by_id(cls, id):

return session.query(cls).filter_by(id=id).all()

@classmethod

def by_name(cls, name):

return session.query(cls).filter_by(username=name).all()

@property

def locked(self):

return self._locked

def __repr__(self):

return "

"username='%s', "

"password='%s', "

"email='%s', "

"phone_number='%s', "

"id_card='%s', "

"createtime='%s', "

"_locked='%s'n)>" % (

self.id,

self.username,

self.password,

self.phone_number,

self.id_card,

self._locked

)

def add_user(self):

# 添加单个对象

# person = User(username='lethe',password='212121')

# session.add(person)

# 添加多个对象

session.add_all([User(username='banban', password='1212120'),

User(username='kuku', password='32321')])

# 提交才会生效,和命令行有区别

sessionmit()

def search_user(self):

# row = session.query(User).all()

# print(row)

row = session.query(User).filter_by(id=1).all()

print(row)

row = session.query(User).filter(User.username == 'banban').all()

print(row)

print(row[0].locked)

def update_user():

row = session.query(User).filter_by(username='lethe').update({User.password: '1010101'})

sessionmit()

def delete_user():

row = session.query(User).filter_by(username='banban')[0] # first

print(row)

session.delete(row)

sessionmit()

将上面的这些程序放在同一目录下 然后运行start.py

再去ubuntu里面的mysql看一下这张表

本文发布于:2024-01-28 10:25:41,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064087466756.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:python
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23