使用 newAdmin 用户登录 MySQL,查看 studentsdb 数据库 grade 表中的数据
时间: 2024-02-20 17:01:40 浏览: 25
您可以使用以下命令来实现您的需求:
1. 以 newAdmin 用户身份登录 MySQL:
```
mysql -u newAdmin -p
```
2. 输入密码进行登录。
3. 选择 studentsdb 数据库:
```
use studentsdb;
```
4. 查看 grade 表中的数据:
```
select * from grade;
```
这样就可以查看到 grade 表中的所有数据了。
相关问题
使用solidity和web3.js实现登录,注册的权限管理的代码
以下是使用 Solidity 和 Web3.js 实现登录、注册和权限管理的示例代码:
Solidity 代码:
```
pragma solidity ^0.8.0;
contract Auth {
mapping(address => bool) public isAdmin;
mapping(address => bool) public isUser;
mapping(address => string) public username;
mapping(string => address) public usernameToAddress;
event NewAdmin(address admin);
event NewUser(address user, string username);
constructor() {
isAdmin[msg.sender] = true;
emit NewAdmin(msg.sender);
}
function register(string memory _username) public {
require(usernameToAddress[_username] == address(0), "Username already exists");
require(!isUser[msg.sender], "Already registered");
isUser[msg.sender] = true;
username[msg.sender] = _username;
usernameToAddress[_username] = msg.sender;
emit NewUser(msg.sender, _username);
}
function grantAdmin(address _admin) public {
require(isAdmin[msg.sender], "Not authorized");
isAdmin[_admin] = true;
emit NewAdmin(_admin);
}
function revokeAdmin(address _admin) public {
require(isAdmin[msg.sender], "Not authorized");
isAdmin[_admin] = false;
}
}
```
该合约维护了三个映射表:
- `isAdmin`:存储管理员地址和其是否为管理员的状态。
- `isUser`:存储用户地址和其是否为用户的状态。
- `username`:存储用户地址和其用户名的映射关系。
合约提供了以下功能:
- `constructor`:在合约部署时将合约创建者设为管理员。
- `register`:用户注册函数,将用户地址和用户名存储到映射表中。
- `grantAdmin`:授予管理员权限函数,只有管理员可以调用该函数。
- `revokeAdmin`:撤销管理员权限函数,只有管理员可以调用该函数。
Web3.js 代码:
```
const Web3 = require('web3');
const contractABI = require('path/to/contract-abi.json');
const web3 = new Web3('http://localhost:8545');
const contractAddress = '0x123456789abcdef';
const contractInstance = new web3.eth.Contract(contractABI, contractAddress);
async function register(username) {
const accounts = await web3.eth.getAccounts();
await contractInstance.methods.register(username).send({ from: accounts[0] });
}
async function grantAdmin(address) {
const accounts = await web3.eth.getAccounts();
await contractInstance.methods.grantAdmin(address).send({ from: accounts[0] });
}
async function revokeAdmin(address) {
const accounts = await web3.eth.getAccounts();
await contractInstance.methods.revokeAdmin(address).send({ from: accounts[0] });
}
async function getUsername(address) {
return await contractInstance.methods.username(address).call();
}
async function getAddress(username) {
return await contractInstance.methods.usernameToAddress(username).call();
}
module.exports = {
register,
grantAdmin,
revokeAdmin,
getUsername,
getAddress
};
```
该代码包括以下功能:
- `register`:调用合约的 `register` 函数,将用户名注册到合约中。
- `grantAdmin`:授权管理员权限。
- `revokeAdmin`:撤销管理员权限。
- `getUsername`:根据地址获取用户名。
- `getAddress`:根据用户名获取地址。
这些函数可以用于网站的登录和注册功能,以及管理员权限管理。
flask 连接数据库和orm
Flask是一个轻量级的Web框架,它并没有内置数据库连接和ORM功能,但是可以通过第三方库来实现这些功能,比如SQLAlchemy。
SQLAlchemy是一个强大的ORM库,可以与多种数据库进行交互,包括SQLite、MySQL、PostgreSQL等等。下面是使用Flask和SQLAlchemy连接数据库和ORM的步骤。
1. 安装SQLAlchemy
可以通过pip命令来安装SQLAlchemy:
```
pip install SQLAlchemy
```
2. 配置数据库连接
在Flask项目的配置文件中,可以配置数据库连接信息。以SQLite为例,配置如下:
```python
SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/database.db'
```
其中,`////path/to/database.db`为SQLite数据库的路径。
3. 创建SQLAlchemy实例
在Flask应用中,需要创建一个SQLAlchemy实例,用于管理数据库连接和ORM映射。可以在应用的工厂函数中创建SQLAlchemy实例,如下所示:
```python
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////path/to/database.db'
db = SQLAlchemy(app)
```
4. 定义模型类
在ORM中,每个数据表都对应一个模型类。可以通过继承SQLAlchemy提供的`db.Model`类来定义模型类。例如,定义一个`User`模型类:
```python
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
def __repr__(self):
return '<User %r>' % self.username
```
在上面的代码中,`User`类继承了`db.Model`类,同时定义了`id`、`username`和`email`三个属性,分别对应数据表中的三个字段。`__repr__`方法用于在控制台中输出模型对象的信息。
5. 数据库迁移
在ORM中,模型类和数据表之间的映射是通过数据库迁移来实现的。可以使用Flask-Migrate扩展库来进行数据库迁移。
首先需要安装Flask-Migrate:
```
pip install Flask-Migrate
```
然后在Flask应用中,创建一个`migrations`目录,用于存放迁移脚本:
```
flask db init
```
接下来,生成一个迁移脚本:
```
flask db migrate -m "create users table"
```
最后,执行迁移脚本,创建数据表:
```
flask db upgrade
```
6. 数据库操作
使用SQLAlchemy进行数据库操作非常简单。例如,向`User`表中插入一条数据:
```python
user = User(username='admin', email='admin@example.com')
db.session.add(user)
db.session.commit()
```
查询数据:
```python
users = User.query.all()
```
更新数据:
```python
user = User.query.filter_by(username='admin').first()
user.email = 'newadmin@example.com'
db.session.commit()
```
删除数据:
```python
user = User.query.filter_by(username='admin').first()
db.session.delete(user)
db.session.commit()
```
以上就是使用Flask和SQLAlchemy进行数据库连接和ORM操作的基本步骤。