Git Product home page Git Product logo

vvandk / kinit Goto Github PK

View Code? Open in Web Editor NEW
435.0 435.0 116.0 14 MB

FastAPI + vue3 前后端分离后台管理系统,包含PC端,微信小程序端。接口使用:FastAPI+Pydantic+SQLAlchemy 2.0+Mysql,PC 端使用:Vue3+Typescript+Vite+Element Plus,小程序使用:Uni-APP + uview ui。异步存储,RBAC 权限管理,定时任务,部门管理等功能。

Home Page: https://kinit.ktianc.top/

License: MIT License

Python 36.09% TypeScript 13.98% Handlebars 0.02% Vue 48.98% Mako 0.02% SCSS 0.88% Dockerfile 0.02%
apscheduler element-plus fastapi mongodb mysq redis sqlalchemy typescript uniapp vite vue vue3

kinit's People

Contributors

ktianc avatar liujianzh avatar vvandk avatar yaqiangsun avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kinit's Issues

新增角色,然后给角色自定义权限,新增一个此角色对应的用户,登录出现异常

复现步骤:

  1. 新增角色:客户
  2. 给角色“客户”增加自定义权限:智慧大屏
  3. 新增一个用户,角色选择:客户
  4. 登录,出现异常。

INFO: 127.0.0.1:50757 - "GET /vadmin/auth/users?page=1&limit=10 HTTP/1.1" 200 OK
请求地址 http://127.0.0.1:9000/auth/getMenuList
捕捉到全局异常:all_exception_handler
(sqlalchemy.exc.MissingGreenlet) greenlet_spawn has not been called; can't call await_only() here. Was IO attempted in an unexpected place?
[SQL: SELECT vadmin_auth_dept.name AS vadmin_auth_dept_name, vadmin_auth_dept.dept_key AS vadmin_auth_dept_dept_key, vadmin_auth_dept.disabled AS vadmin_auth_dept_disabled, vadmin_auth_dept.order AS vadmin_auth_dept_order, vadmin_auth_dept.desc AS vadmin_auth_dept_desc, vadmin_auth_dept.owner AS vadmin_auth_dept_owner, vadmin_auth_dept.phone AS vadmin_auth_dept_phone, vadmin_auth_dept.email AS vadmin_auth_dept_email, vadmin_auth_dept.parent_id AS vadmin_auth_dept_parent_id, vadmin_auth_dept.id AS vadmin_auth_dept_id, vadmin_auth_dept.create_datetime AS vadmin_auth_dept_create_datetime, vadmin_auth_dept.update_datetime AS vadmin_auth_dept_update_datetime, vadmin_auth_dept.delete_datetime AS vadmin_auth_dept_delete_datetime, vadmin_auth_dept.is_delete AS vadmin_auth_dept_is_delete
FROM vadmin_auth_dept, vadmin_auth_role_depts
WHERE %s = vadmin_auth_role_depts.role_id AND vadmin_auth_dept.id = vadmin_auth_role_depts.dept_id]
[parameters: [{'%(2519007426688 param)s': 2}]]
(Background on this error at: https://sqlalche.me/e/20/xd2s)
INFO: 127.0.0.1:50780 - "GET /auth/getMenuList HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\base.py", line 1814, in _execute_context
context = constructor(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\default.py", line 1399, in _init_compiled
self.cursor = self.create_cursor()
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\default.py", line 1723, in create_cursor
return self.create_default_cursor()
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\default.py", line 1729, in create_default_cursor
return self._dbapi_connection.cursor()
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\pool\base.py", line 1491, in cursor
return self.dbapi_connection.cursor(*args, **kwargs)
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\dialects\mysql\asyncmy.py", line 216, in cursor
return AsyncAdapt_asyncmy_cursor(self)
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\dialects\mysql\asyncmy.py", line 58, in init
self.cursor = self.await(cursor.aenter())
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\util_concurrency_py3k.py", line 121, in await_only
raise exc.MissingGreenlet(
sqlalchemy.exc.MissingGreenlet: greenlet_spawn has not been called; can't call await_only() here. Was IO attempted in an unexpected place? (Background on this error at: https://sqlalche.me/e/20/xd2s)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "D:\Python\VEN\ctms-api\lib\site-packages\uvicorn\protocols\http\httptools_impl.py", line 426, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "D:\Python\VEN\ctms-api\lib\site-packages\uvicorn\middleware\proxy_headers.py", line 84, in call
return await self.app(scope, receive, send)
File "D:\Python\VEN\ctms-api\lib\site-packages\fastapi\applications.py", line 1054, in call
await super().call(scope, receive, send)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\applications.py", line 116, in call
await self.middleware_stack(scope, receive, send)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\errors.py", line 186, in call
raise exc
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\errors.py", line 164, in call
await self.app(scope, receive, send)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\cors.py", line 83, in call
await self.app(scope, receive, send)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\base.py", line 191, in call
response = await self.dispatch_func(request, call_next)
File "F:\Space\CTMS\ctms-api\core\middleware.py", line 146, in jwt_refresh_middleware
response = await call_next(request)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\base.py", line 165, in call_next
raise app_exc
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\base.py", line 151, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\base.py", line 191, in call
response = await self.dispatch_func(request, call_next)
File "F:\Space\CTMS\ctms-api\core\middleware.py", line 64, in operation_record_middleware
response = await call_next(request)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\base.py", line 165, in call_next
raise app_exc
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\base.py", line 151, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\base.py", line 191, in call
response = await self.dispatch_func(request, call_next)
File "F:\Space\CTMS\ctms-api\core\middleware.py", line 46, in request_log_middleware
response = await call_next(request)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\base.py", line 165, in call_next
raise app_exc
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\base.py", line 151, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\exceptions.py", line 62, in call
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette_exception_handler.py", line 55, in wrapped_app
raise exc
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette_exception_handler.py", line 44, in wrapped_app
await app(scope, receive, sender)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\routing.py", line 746, in call
await route.handle(scope, receive, send)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\routing.py", line 288, in handle
await self.app(scope, receive, send)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\routing.py", line 75, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette_exception_handler.py", line 55, in wrapped_app
raise exc
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette_exception_handler.py", line 44, in wrapped_app
await app(scope, receive, sender)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\routing.py", line 70, in app
response = await func(request)
File "D:\Python\VEN\ctms-api\lib\site-packages\fastapi\routing.py", line 285, in app
raise e
File "D:\Python\VEN\ctms-api\lib\site-packages\fastapi\routing.py", line 275, in app
solved_result = await solve_dependencies(
File "D:\Python\VEN\ctms-api\lib\site-packages\fastapi\dependencies\utils.py", line 598, in solve_dependencies
solved = await call(**sub_values)
File "F:\Space\CTMS\ctms-api\apps\vadmin\auth\utils\current.py", line 99, in call
result = await self.validate_user(request, user, db, is_all=False)
File "F:\Space\CTMS\ctms-api\apps\vadmin\auth\utils\validation\auth.py", line 108, in validate_user
data_range, dept_ids = await cls.get_user_data_range(user, db)
File "F:\Space\CTMS\ctms-api\apps\vadmin\auth\utils\validation\auth.py", line 154, in get_user_data_range
for dept in role_obj.depts:
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\orm\attributes.py", line 566, in get
return self.impl.get(state, dict
) # type: ignore[no-any-return]
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\orm\attributes.py", line 1086, in get
value = self._fire_loader_callables(state, key, passive)
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\orm\attributes.py", line 1121, in fire_loader_callables
return self.callable
(state, passive)
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\orm\strategies.py", line 967, in _load_for_state
return self._emit_lazyload(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\orm\strategies.py", line 1130, in _emit_lazyload
result = session.execute(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\orm\session.py", line 2308, in execute
return self._execute_internal(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\orm\session.py", line 2190, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement
result = conn.execute(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\base.py", line 1416, in execute
return meth(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\sql\elements.py", line 517, in _execute_on_connection
return connection._execute_clauseelement(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\base.py", line 1639, in _execute_clauseelement
ret = self._execute_context(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\base.py", line 1820, in _execute_context
self._handle_dbapi_exception(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\base.py", line 2344, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\base.py", line 1814, in _execute_context
context = constructor(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\default.py", line 1399, in _init_compiled
self.cursor = self.create_cursor()
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\default.py", line 1723, in create_cursor
return self.create_default_cursor()
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\default.py", line 1729, in create_default_cursor
return self._dbapi_connection.cursor()
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\pool\base.py", line 1491, in cursor
return self.dbapi_connection.cursor(*args, **kwargs)
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\dialects\mysql\asyncmy.py", line 216, in cursor
return AsyncAdapt_asyncmy_cursor(self)
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\dialects\mysql\asyncmy.py", line 58, in init
self.cursor = self.await(cursor.aenter())
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\util_concurrency_py3k.py", line 121, in await_only
raise exc.MissingGreenlet(
sqlalchemy.exc.StatementError: (sqlalchemy.exc.MissingGreenlet) greenlet_spawn has not been called; can't call await_only() here. Was IO attempted in an unexpected place?
[SQL: SELECT vadmin_auth_dept.name AS vadmin_auth_dept_name, vadmin_auth_dept.dept_key AS vadmin_auth_dept_dept_key, vadmin_auth_dept.disabled AS vadmin_auth_dept_disabled, vadmin_auth_dept.order AS vadmin_auth_dept_order, vadmin_auth_dept.desc AS vadmin_auth_dept_desc, vadmin_auth_dept.owner AS vadmin_auth_dept_owner, vadmin_auth_dept.phone AS vadmin_auth_dept_phone, vadmin_auth_dept.email AS vadmin_auth_dept_email, vadmin_auth_dept.parent_id AS vadmin_auth_dept_parent_id, vadmin_auth_dept.id AS vadmin_auth_dept_id, vadmin_auth_dept.create_datetime AS vadmin_auth_dept_create_datetime, vadmin_auth_dept.update_datetime AS vadmin_auth_dept_update_datetime, vadmin_auth_dept.delete_datetime AS vadmin_auth_dept_delete_datetime, vadmin_auth_dept.is_delete AS vadmin_auth_dept_is_delete
FROM vadmin_auth_dept, vadmin_auth_role_depts
WHERE %s = vadmin_auth_role_depts.role_id AND vadmin_auth_dept.id = vadmin_auth_role_depts.dept_id]
[parameters: [{'%(2519007426688 param)s': 2}]]
(Background on this error at: https://sqlalche.me/e/20/xd2s)
请求地址 http://127.0.0.1:9000/auth/getMenuList
捕捉到全局异常:all_exception_handler
(sqlalchemy.exc.MissingGreenlet) greenlet_spawn has not been called; can't call await_only() here. Was IO attempted in an unexpected place?
[SQL: SELECT vadmin_auth_dept.name AS vadmin_auth_dept_name, vadmin_auth_dept.dept_key AS vadmin_auth_dept_dept_key, vadmin_auth_dept.disabled AS vadmin_auth_dept_disabled, vadmin_auth_dept.order AS vadmin_auth_dept_order, vadmin_auth_dept.desc AS vadmin_auth_dept_desc, vadmin_auth_dept.owner AS vadmin_auth_dept_owner, vadmin_auth_dept.phone AS vadmin_auth_dept_phone, vadmin_auth_dept.email AS vadmin_auth_dept_email, vadmin_auth_dept.parent_id AS vadmin_auth_dept_parent_id, vadmin_auth_dept.id AS vadmin_auth_dept_id, vadmin_auth_dept.create_datetime AS vadmin_auth_dept_create_datetime, vadmin_auth_dept.update_datetime AS vadmin_auth_dept_update_datetime, vadmin_auth_dept.delete_datetime AS vadmin_auth_dept_delete_datetime, vadmin_auth_dept.is_delete AS vadmin_auth_dept_is_delete
FROM vadmin_auth_dept, vadmin_auth_role_depts
WHERE %s = vadmin_auth_role_depts.role_id AND vadmin_auth_dept.id = vadmin_auth_role_depts.dept_id]
[parameters: [{'%(2519007426688 param)s': 2}]]
(Background on this error at: https://sqlalche.me/e/20/xd2s)
INFO: 127.0.0.1:50803 - "GET /auth/getMenuList HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\base.py", line 1814, in _execute_context
context = constructor(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\default.py", line 1399, in _init_compiled
self.cursor = self.create_cursor()
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\default.py", line 1723, in create_cursor
return self.create_default_cursor()
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\default.py", line 1729, in create_default_cursor
return self._dbapi_connection.cursor()
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\pool\base.py", line 1491, in cursor
return self.dbapi_connection.cursor(*args, **kwargs)
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\dialects\mysql\asyncmy.py", line 216, in cursor
return AsyncAdapt_asyncmy_cursor(self)
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\dialects\mysql\asyncmy.py", line 58, in init
self.cursor = self.await(cursor.aenter())
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\util_concurrency_py3k.py", line 121, in await_only
raise exc.MissingGreenlet(
sqlalchemy.exc.MissingGreenlet: greenlet_spawn has not been called; can't call await_only() here. Was IO attempted in an unexpected place? (Background on this error at: https://sqlalche.me/e/20/xd2s)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "D:\Python\VEN\ctms-api\lib\site-packages\uvicorn\protocols\http\httptools_impl.py", line 426, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "D:\Python\VEN\ctms-api\lib\site-packages\uvicorn\middleware\proxy_headers.py", line 84, in call
return await self.app(scope, receive, send)
File "D:\Python\VEN\ctms-api\lib\site-packages\fastapi\applications.py", line 1054, in call
await super().call(scope, receive, send)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\applications.py", line 116, in call
await self.middleware_stack(scope, receive, send)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\errors.py", line 186, in call
raise exc
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\errors.py", line 164, in call
await self.app(scope, receive, send)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\cors.py", line 83, in call
await self.app(scope, receive, send)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\base.py", line 191, in call
response = await self.dispatch_func(request, call_next)
File "F:\Space\CTMS\ctms-api\core\middleware.py", line 146, in jwt_refresh_middleware
response = await call_next(request)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\base.py", line 165, in call_next
raise app_exc
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\base.py", line 151, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\base.py", line 191, in call
response = await self.dispatch_func(request, call_next)
File "F:\Space\CTMS\ctms-api\core\middleware.py", line 64, in operation_record_middleware
response = await call_next(request)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\base.py", line 165, in call_next
raise app_exc
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\base.py", line 151, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\base.py", line 191, in call
response = await self.dispatch_func(request, call_next)
File "F:\Space\CTMS\ctms-api\core\middleware.py", line 46, in request_log_middleware
response = await call_next(request)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\base.py", line 165, in call_next
raise app_exc
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\base.py", line 151, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\middleware\exceptions.py", line 62, in call
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette_exception_handler.py", line 55, in wrapped_app
raise exc
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette_exception_handler.py", line 44, in wrapped_app
await app(scope, receive, sender)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\routing.py", line 746, in call
await route.handle(scope, receive, send)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\routing.py", line 288, in handle
await self.app(scope, receive, send)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\routing.py", line 75, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette_exception_handler.py", line 55, in wrapped_app
raise exc
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette_exception_handler.py", line 44, in wrapped_app
await app(scope, receive, sender)
File "D:\Python\VEN\ctms-api\lib\site-packages\starlette\routing.py", line 70, in app
response = await func(request)
File "D:\Python\VEN\ctms-api\lib\site-packages\fastapi\routing.py", line 285, in app
raise e
File "D:\Python\VEN\ctms-api\lib\site-packages\fastapi\routing.py", line 275, in app
solved_result = await solve_dependencies(
File "D:\Python\VEN\ctms-api\lib\site-packages\fastapi\dependencies\utils.py", line 598, in solve_dependencies
solved = await call(**sub_values)
File "F:\Space\CTMS\ctms-api\apps\vadmin\auth\utils\current.py", line 99, in call
result = await self.validate_user(request, user, db, is_all=False)
File "F:\Space\CTMS\ctms-api\apps\vadmin\auth\utils\validation\auth.py", line 108, in validate_user
data_range, dept_ids = await cls.get_user_data_range(user, db)
File "F:\Space\CTMS\ctms-api\apps\vadmin\auth\utils\validation\auth.py", line 154, in get_user_data_range
for dept in role_obj.depts:
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\orm\attributes.py", line 566, in get
return self.impl.get(state, dict
) # type: ignore[no-any-return]
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\orm\attributes.py", line 1086, in get
value = self._fire_loader_callables(state, key, passive)
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\orm\attributes.py", line 1121, in fire_loader_callables
return self.callable
(state, passive)
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\orm\strategies.py", line 967, in _load_for_state
return self._emit_lazyload(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\orm\strategies.py", line 1130, in _emit_lazyload
result = session.execute(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\orm\session.py", line 2308, in execute
return self._execute_internal(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\orm\session.py", line 2190, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement
result = conn.execute(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\base.py", line 1416, in execute
return meth(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\sql\elements.py", line 517, in _execute_on_connection
return connection._execute_clauseelement(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\base.py", line 1639, in _execute_clauseelement
ret = self._execute_context(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\base.py", line 1820, in _execute_context
self._handle_dbapi_exception(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\base.py", line 2344, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\base.py", line 1814, in _execute_context
context = constructor(
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\default.py", line 1399, in _init_compiled
self.cursor = self.create_cursor()
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\default.py", line 1723, in create_cursor
return self.create_default_cursor()
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\engine\default.py", line 1729, in create_default_cursor
return self._dbapi_connection.cursor()
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\pool\base.py", line 1491, in cursor
return self.dbapi_connection.cursor(*args, **kwargs)
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\dialects\mysql\asyncmy.py", line 216, in cursor
return AsyncAdapt_asyncmy_cursor(self)
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\dialects\mysql\asyncmy.py", line 58, in init
self.cursor = self.await(cursor.aenter())
File "D:\Python\VEN\ctms-api\lib\site-packages\sqlalchemy\util_concurrency_py3k.py", line 121, in await_only
raise exc.MissingGreenlet(
sqlalchemy.exc.StatementError: (sqlalchemy.exc.MissingGreenlet) greenlet_spawn has not been called; can't call await_only() here. Was IO attempted in an unexpected place?
[SQL: SELECT vadmin_auth_dept.name AS vadmin_auth_dept_name, vadmin_auth_dept.dept_key AS vadmin_auth_dept_dept_key, vadmin_auth_dept.disabled AS vadmin_auth_dept_disabled, vadmin_auth_dept.order AS vadmin_auth_dept_order, vadmin_auth_dept.desc AS vadmin_auth_dept_desc, vadmin_auth_dept.owner AS vadmin_auth_dept_owner, vadmin_auth_dept.phone AS vadmin_auth_dept_phone, vadmin_auth_dept.email AS vadmin_auth_dept_email, vadmin_auth_dept.parent_id AS vadmin_auth_dept_parent_id, vadmin_auth_dept.id AS vadmin_auth_dept_id, vadmin_auth_dept.create_datetime AS vadmin_auth_dept_create_datetime, vadmin_auth_dept.update_datetime AS vadmin_auth_dept_update_datetime, vadmin_auth_dept.delete_datetime AS vadmin_auth_dept_delete_datetime, vadmin_auth_dept.is_delete AS vadmin_auth_dept_is_delete
FROM vadmin_auth_dept, vadmin_auth_role_depts
WHERE %s = vadmin_auth_role_depts.role_id AND vadmin_auth_dept.id = vadmin_auth_role_depts.dept_id]
[parameters: [{'%(2519007426688 param)s': 2}]]
(Background on this error at: https://sqlalche.me/e/20/xd2s)

Too many connections

api运行一段时间后报“Too many connections”错误,然后服务宕机

kinit-api only supports Win system?

from win32com.client import gencache import comtypes.client

I find two useless functions in kinit-api/utils/tools.py: ppt_to_pdf_1 and ppt_to_pdf_2, which import two packages only supported on the Windows system. Does kinit-api only support on win? I am not sure why to create these two functions. Seems they are not used in codes.

执行 初始化数据库数据 python3 main.py init --env dev时报错

Traceback (most recent call last):
File "/Volumes/DATA/Projects/pterosaur/main.py", line 18, in
from application import urls
File "/Volumes/DATA/Projects/pterosaur/application/urls.py", line 8, in
from apps import *
File "/Volumes/DATA/Projects/pterosaur/apps/init.py", line 10, in
from apps.vadmin.auth.utils.login import app as auth_app
File "/Volumes/DATA/Projects/pterosaur/apps/vadmin/auth/utils/login.py", line 30, in
from .login_manage import LoginManage
File "/Volumes/DATA/Projects/pterosaur/apps/vadmin/auth/utils/login_manage.py", line 14, in
from .validation import LoginValidation, LoginForm, LoginResult
File "/Volumes/DATA/Projects/pterosaur/apps/vadmin/auth/utils/validation/init.py", line 10, in
from .login import LoginValidation, LoginForm, LoginResult, WXLoginForm
File "/Volumes/DATA/Projects/pterosaur/apps/vadmin/auth/utils/validation/login.py", line 13, in
from apps.vadmin.auth import crud, schemas
File "/Volumes/DATA/Projects/pterosaur/apps/vadmin/auth/crud.py", line 10, in
from aioredis import Redis
File "/Volumes/DATA/Projects/pterosaur/venv/lib/python3.11/site-packages/aioredis/init.py", line 1, in
from aioredis.client import Redis, StrictRedis
File "/Volumes/DATA/Projects/pterosaur/venv/lib/python3.11/site-packages/aioredis/client.py", line 32, in
from aioredis.connection import (
File "/Volumes/DATA/Projects/pterosaur/venv/lib/python3.11/site-packages/aioredis/connection.py", line 33, in
from .exceptions import (
File "/Volumes/DATA/Projects/pterosaur/venv/lib/python3.11/site-packages/aioredis/exceptions.py", line 14, in
class TimeoutError(asyncio.TimeoutError, builtins.TimeoutError, RedisError):
TypeError: duplicate base class TimeoutError

请问是什么原因?

这么好的项目该推广

大佬有时间出视频讲讲fastapi及其生态呀,也把这个项目给推一推,说一说实现细节,
我们公司目前也是用fastapi,但是把它封装成了drf,难受

Could not find a version that satisfies the requirement pywin32==306 (from versions: none)

在centos7.9部署docler时

ERROR: Could not find a version that satisfies the requirement pywin32==306 (from versions: none)
#0 18.73 ERROR: No matching distribution found for pywin32==306

failed to solve: process "/bin/sh -c pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/" did not complete successfully: exit code: 1
报错了
确定要用到windows的pywin32吗?不安装这个行吗

项目启动失败

启动项目遇到问题,日志如下:

开始初始化数据
online
Traceback (most recent call last):
  File "/Users/wanchengzhang/.pyenv/versions/3.11.1/bin/alembic", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/Users/wanchengzhang/.pyenv/versions/3.11.1/lib/python3.11/site-packages/alembic/config.py", line 590, in main
    CommandLine(prog=prog).main(argv=argv)
  File "/Users/wanchengzhang/.pyenv/versions/3.11.1/lib/python3.11/site-packages/alembic/config.py", line 584, in main
    self.run_cmd(cfg, options)
  File "/Users/wanchengzhang/.pyenv/versions/3.11.1/lib/python3.11/site-packages/alembic/config.py", line 561, in run_cmd
    fn(
  File "/Users/wanchengzhang/.pyenv/versions/3.11.1/lib/python3.11/site-packages/alembic/command.py", line 229, in revision
    script_directory.run_env()
  File "/Users/wanchengzhang/.pyenv/versions/3.11.1/lib/python3.11/site-packages/alembic/script/base.py", line 569, in run_env
    util.load_python_file(self.dir, "env.py")
  File "/Users/wanchengzhang/.pyenv/versions/3.11.1/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 94, in load_python_file
    module = load_module_py(module_id, path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wanchengzhang/.pyenv/versions/3.11.1/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 110, in load_module_py
    spec.loader.exec_module(module)  # type: ignore
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/Users/wanchengzhang/Programming/python/kinit/kinit-api/alembic/env.py", line 89, in <module>
    run_migrations_online()
  File "/Users/wanchengzhang/Programming/python/kinit/kinit-api/alembic/env.py", line 69, in run_migrations_online
    connectable = engine_from_config(
                  ^^^^^^^^^^^^^^^^^^^
  File "/Users/wanchengzhang/.pyenv/versions/3.11.1/lib/python3.11/site-packages/sqlalchemy/engine/create.py", line 803, in engine_from_config
    return create_engine(url, **options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in create_engine
  File "/Users/wanchengzhang/.pyenv/versions/3.11.1/lib/python3.11/site-packages/sqlalchemy/util/deprecations.py", line 281, in warned
    return fn(*args, **kwargs)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^
  File "/Users/wanchengzhang/.pyenv/versions/3.11.1/lib/python3.11/site-packages/sqlalchemy/engine/create.py", line 548, in create_engine
    u = _url.make_url(url)
        ^^^^^^^^^^^^^^^^^^
  File "/Users/wanchengzhang/.pyenv/versions/3.11.1/lib/python3.11/site-packages/sqlalchemy/engine/url.py", line 838, in make_url
    return _parse_url(name_or_url)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wanchengzhang/.pyenv/versions/3.11.1/lib/python3.11/site-packages/sqlalchemy/engine/url.py", line 899, in _parse_url
    components["port"] = int(components["port"])
                         ^^^^^^^^^^^^^^^^^^^^^^^
ValueError: invalid literal for int() with base 10: 'post'
Traceback (most recent call last):

  File "/Users/wanchengzhang/Programming/python/kinit/kinit-api/main.py", line 118, in <module>
    shell_app()

  File "/Users/wanchengzhang/Programming/python/kinit/kinit-api/main.py", line 91, in init
    asyncio.run(data.run(env))

  File "/Users/wanchengzhang/.pyenv/versions/3.11.1/lib/python3.11/asyncio/runners.py", line 190, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^

  File "/Users/wanchengzhang/.pyenv/versions/3.11.1/lib/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  File "/Users/wanchengzhang/.pyenv/versions/3.11.1/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^

  File "/Users/wanchengzhang/Programming/python/kinit/kinit-api/scripts/initialize/initialize.py", line 155, in run
    self.migrate_model(env)

  File "/Users/wanchengzhang/Programming/python/kinit/kinit-api/scripts/initialize/initialize.py", line 51, in migrate_model
    subprocess.check_call(['alembic', '--name', f'{env.value}', 'revision', '--autogenerate', '-m', f'{VERSION}'], cwd=BASE_DIR)

  File "/Users/wanchengzhang/.pyenv/versions/3.11.1/lib/python3.11/subprocess.py", line 413, in check_call
    raise CalledProcessError(retcode, cmd)

subprocess.CalledProcessError: Command '['alembic', '--name', 'dev', 'revision', '--autogenerate', '-m', '2.3.0']' returned non-zero exit status 1.

项目交流qq群 Kinit交流群1 754520362

群名称:
Kinit交流群1
群 号:
754520362

目前项目处于初级阶段,使用过程中遇到很多问题,希望建立这个群,大家能一起交流。
诚邀 vvandk入群,解答大家的问题。

用戶管理顯示方式

有沒有考慮可以把字典管理的那種顯示方式,用戶管理的部門也用這種方式呈現呢?

像是這樣
image

执行 python3 main.py init --env dev 报错 python 3.10.11

开始初始化数据
online
Traceback (most recent call last):
File "", line 198, in _run_module_as_main
File "", line 88, in run_code
File "H:\python\venv\Scripts\alembic.exe_main
.py", line 7, in
File "H:\python\venv\Lib\site-packages\alembic\config.py", line 641, in main
CommandLine(prog=prog).main(argv=argv)
File "H:\python\venv\Lib\site-packages\alembic\config.py", line 631, in main
self.run_cmd(cfg, options)
File "H:\python\venv\Lib\site-packages\alembic\config.py", line 608, in run_cmd
fn(
File "H:\python\venv\Lib\site-packages\alembic\command.py", line 236, in revision
script_directory.run_env()
File "H:\python\venv\Lib\site-packages\alembic\script\base.py", line 583, in run_env
util.load_python_file(self.dir, "env.py")
File "H:\python\venv\Lib\site-packages\alembic\util\pyfiles.py", line 95, in load_python_file
module = load_module_py(module_id, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "H:\python\venv\Lib\site-packages\alembic\util\pyfiles.py", line 113, in load_module_py
spec.loader.exec_module(module) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 940, in exec_module
File "", line 241, in _call_with_frames_removed
File "H:\python\kinit\kinit-api\alembic\env.py", line 92, in
run_migrations_online()
File "H:\python\kinit\kinit-api\alembic\env.py", line 75, in run_migrations_online
with connectable.connect() as connection:
^^^^^^^^^^^^^^^^^^^^^
File "H:\python\venv\Lib\site-packages\sqlalchemy\engine\base.py", line 3269, in connect
return self._connection_cls(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "H:\python\venv\Lib\site-packages\sqlalchemy\engine\base.py", line 145, in init
self._dbapi_connection = engine.raw_connection()
^^^^^^^^^^^^^^^^^^^^^^^
File "H:\python\venv\Lib\site-packages\sqlalchemy\engine\base.py", line 3293, in raw_connection
return self.pool.connect()
^^^^^^^^^^^^^^^^^^^
File "H:\python\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 452, in connect
return _ConnectionFairy._checkout(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "H:\python\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 1269, in _checkout
fairy = _ConnectionRecord.checkout(pool)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "H:\python\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 716, in checkout
rec = pool._do_get()
^^^^^^^^^^^^^^
File "H:\python\venv\Lib\site-packages\sqlalchemy\pool\impl.py", line 284, in _do_get
return self._create_connection()
^^^^^^^^^^^^^^^^^^^^^^^^^
File "H:\python\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 393, in _create_connection
return _ConnectionRecord(self)
^^^^^^^^^^^^^^^^^^^^^^^
File "H:\python\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 678, in init
self.__connect()
File "H:\python\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 902, in __connect
with util.safe_reraise():
File "H:\python\venv\Lib\site-packages\sqlalchemy\util\langhelpers.py", line 146, in exit
raise exc_value.with_traceback(exc_tb)
File "H:\python\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 898, in __connect
self.dbapi_connection = connection = pool._invoke_creator(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "H:\python\venv\Lib\site-packages\sqlalchemy\engine\create.py", line 645, in connect
return dialect.connect(*cargs, **cparams)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "H:\python\venv\Lib\site-packages\sqlalchemy\engine\default.py", line 616, in connect
return self.loaded_dbapi.connect(*cargs, **cparams)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "H:\python\venv\Lib\site-packages\sqlalchemy\dialects\mysql\asyncmy.py", line 281, in connect
await_only(creator_fn(*arg, **kw)),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "H:\python\venv\Lib\site-packages\sqlalchemy\util_concurrency_py3k.py", line 121, in await_only
raise exc.MissingGreenlet(
sqlalchemy.exc.MissingGreenlet: greenlet_spawn has not been called; can't call await_only() here. Was IO attempted in an unexpected place? (Background on this error at:
https://sqlalche.me/e/20/xd2s)
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ H:\python\kinit\kinit-api\main.py:100 in init │
│ │
│ 97 │ """ │
│ 98 │ print("开始初始化数据") │
│ 99 │ data = InitializeData() │
│ ❱ 100 │ asyncio.run(data.run(env)) │
│ 101 │
│ 102 │
│ 103 @shell_app.command() │
│ │
│ ╭────────────────────────────────────── locals ──────────────────────────────────────╮ │
│ │ data = <scripts.initialize.initialize.InitializeData object at 0x0000024418567150> │ │
│ │ env = <Environment.dev: 'dev'> │ │
│ ╰────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py:190 in run │
│ │
│ 187 │ │ │ "asyncio.run() cannot be called from a running event loop") │
│ 188 │ │
│ 189 │ with Runner(debug=debug) as runner: │
│ ❱ 190 │ │ return runner.run(main) │
│ 191 │
│ 192 │
│ 193 def _cancel_all_tasks(loop): │
│ │
│ ╭─────────────────────────────── locals ───────────────────────────────╮ │
│ │ debug = None │ │
│ │ main = <coroutine object InitializeData.run at 0x0000024419884E50> │ │
│ │ runner = <asyncio.runners.Runner object at 0x00000244198A8B90> │ │
│ ╰──────────────────────────────────────────────────────────────────────╯ │
│ │
│ C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py:118 in run │
│ │
│ 115 │ │ │
│ 116 │ │ self._interrupt_count = 0 │
│ 117 │ │ try: │
│ ❱ 118 │ │ │ return self._loop.run_until_complete(task) │
│ 119 │ │ except exceptions.CancelledError: │
│ 120 │ │ │ if self._interrupt_count > 0: │
│ 121 │ │ │ │ uncancel = getattr(task, "uncancel", None) │
│ │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │ context = <_contextvars.Context object at 0x000002441857D880> │ │
│ │ coro = <coroutine object InitializeData.run at 0x0000024419884E50> │ │
│ │ self = <asyncio.runners.Runner object at 0x00000244198A8B90> │ │
│ │ sigint_handler = functools.partial(<bound method Runner._on_sigint of │ │
│ │ <asyncio.runners.Runner object at 0x00000244198A8B90>>, main_task=<Task │ │
│ │ finished name='Task-1' coro=<InitializeData.run() done, defined at │ │
│ │ H:\python\kinit\kinit-api\scripts\initialize\initialize.py:163> │ │
│ │ exception=CalledProcessError(1, ['alembic', '--name', 'dev', 'revision', │ │
│ │ '--autogenerate', '-m', '3.10.0'])>) │ │
│ │ task = <Task finished name='Task-1' coro=<InitializeData.run() done, defined at │ │
│ │ H:\python\kinit\kinit-api\scripts\initialize\initialize.py:163> │ │
│ │ exception=CalledProcessError(1, ['alembic', '--name', 'dev', 'revision', │ │
│ │ '--autogenerate', '-m', '3.10.0'])> │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py:654 in │
│ run_until_complete │
│ │
│ 651 │ │ if not future.done(): │
│ 652 │ │ │ raise RuntimeError('Event loop stopped before Future completed.') │
│ 653 │ │ │
│ ❱ 654 │ │ return future.result() │
│ 655 │ │
│ 656 │ def stop(self): │
│ 657 │ │ """Stop running the event loop. │
│ │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │ future = <Task finished name='Task-1' coro=<InitializeData.run() done, defined at │ │
│ │ H:\python\kinit\kinit-api\scripts\initialize\initialize.py:163> │ │
│ │ exception=CalledProcessError(1, ['alembic', '--name', 'dev', 'revision', │ │
│ │ '--autogenerate', '-m', '3.10.0'])> │ │
│ │ new_task = False │ │
│ │ self = │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ H:\python\kinit\kinit-api\scripts\initialize\initialize.py:167 in run │
│ │
│ 164 │ │ """ │
│ 165 │ │ 执行初始化工作 │
│ 166 │ │ """ │
│ ❱ 167 │ │ self.migrate_model(env) │
│ 168 │ │ await self.generate_menu() │
│ 169 │ │ await self.generate_role() │
│ 170 │ │ await self.generate_dept() │
│ │
│ ╭────────────────────────────────────── locals ──────────────────────────────────────╮ │
│ │ env = <Environment.dev: 'dev'> │ │
│ │ self = <scripts.initialize.initialize.InitializeData object at 0x0000024418567150> │ │
│ ╰────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ H:\python\kinit\kinit-api\scripts\initialize\initialize.py:51 in migrate_model │
│ │
│ 48 │ │ """ │
│ 49 │ │ 模型迁移映射到数据库 │
│ 50 │ │ """ │
│ ❱ 51 │ │ subprocess.check_call(['alembic', '--name', f'{env.value}', 'revision', '--autog │
│ 52 │ │ subprocess.check_call(['alembic', '--name', f'{env.value}', 'upgrade', 'head'], │
│ 53 │ │ print(f"环境:{env} {VERSION} 数据库表迁移完成") │
│ 54 │
│ │
│ ╭─────────────────────────── locals ───────────────────────────╮ │
│ │ cls = <class 'scripts.initialize.initialize.InitializeData'> │ │
│ │ env = <Environment.dev: 'dev'> │ │
│ ╰──────────────────────────────────────────────────────────────╯ │
│ │
│ C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\subprocess.py:413 in │
│ check_call │
│ │
│ 410 │ │ cmd = kwargs.get("args") │
│ 411 │ │ if cmd is None: │
│ 412 │ │ │ cmd = popenargs[0] │
│ ❱ 413 │ │ raise CalledProcessError(retcode, cmd) │
│ 414 │ return 0 │
│ 415 │
│ 416 │
│ │
│ ╭───────────────────────────────────────── locals ──────────────────────────────────────────╮ │
│ │ cmd = ['alembic', '--name', 'dev', 'revision', '--autogenerate', '-m', '3.10.0'] │ │
│ │ kwargs = {'cwd': 'H:\python\kinit\kinit-api'} │ │
│ │ popenargs = (['alembic', '--name', 'dev', 'revision', '--autogenerate', '-m', '3.10.0'],) │ │
│ │ retcode = 1 │ │
│ ╰───────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
CalledProcessError: Command '['alembic', '--name', 'dev', 'revision', '--autogenerate', '-m', '3.10.0']' returned non-zero exit status 1.

vue-element-plus-admin 正在憋大招了,完成后会及时同步到本项目。

本项目前端是基于vue-element-plus-admin开源前端项目开发的,该项目每次更新,都会及时同步过来,在这里感谢vue-element-plus-admin的作者

vue-element-plus-admin:https://gitee.com/kailong110120130/vue-element-plus-admin

根据 vue-element-plus-admin 作者的描述,目前已经在着手准备 2.0 大版本更新了,并在github分享了更新计划:https://github.com/kailong321200875/vue-element-plus-admin/issues/262

非常期待!!!

vue-element-plus-admin 更新完成后,本项目也会及时同步过来!

【更新计划】

  • 加入 docker-compose 部署项目
  • 加入多租户方案

当前正在使用本项目完成一个多租户方案店铺管理系统,项目成功上线后,会将多租户方案同步到该项目中。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.